Собственная сущность не удаляется в отношении manyToMany - PullRequest
0 голосов
/ 29 мая 2020

Извините за этот новый вопрос, но я не нашел удовлетворительного ответа для своего случая: (

У меня есть отношение manyToMany:

Субъект подписки (объект-владелец):

@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinTable(name = "SubscriptionSignerMapping",
    joinColumns = @JoinColumn(name = "subscriptionId", referencedColumnName = "id", nullable = false),
    inverseJoinColumns = @JoinColumn(name = "signerId", referencedColumnName = "id", nullable = false))
private List<Signer> signers = new ArrayList<Signer>();

Подписывающее лицо (собственное лицо):

@ManyToMany(fetch = FetchType.LAZY, mappedBy = "signers")
private List<Subscription> subscriptions = new ArrayList<Subscription>();

Когда я удаляю подписку, я не хочу, чтобы подписывающая сторона была удалена , кроме случаев, когда удаленная подписка является последней для подписывающая сторона .

Итак, мой код (в методе @Transactional):

        subscription.getSigners().stream().filter(s -> s.getSubscriptions().size() == 1).forEach(s -> {
            signerService.delete(s);
        });
        subscriptionService.deleteSubscription(subscription);

Мой уровень обслуживания просто вызывает CrudRepository из Spring-data. Что я вижу:

  • У меня нет ошибки

  • Подписка удалена из моей базы данных

  • В таблице сопоставления строка удаляется

  • Подписавшая сторона все еще присутствует в базе данных

Мой стек: java 8 / spring-boot 2.1

У вас есть предложения?

Спасибо.

...