拥有的实体不会在manyToMany关系中删除

时间:2020-05-29 09:20:15

标签: java hibernate spring-data-jpa spring-data

很抱歉这个新问题,但我的案例没有找到令人满意的答案:(

我有一个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);

我的服务层仅调用Spring数据的CrudRepository。 我所看到的:

  • 我没有错误

  • 该订阅已从我的数据库中删除

  • 在映射表中,该行被删除

  • 签名人仍然存在于数据库中

我的堆栈:java 8 / spring-boot 2.1

您有什么建议吗?

谢谢。

0 个答案:

没有答案