休眠 5 + JPA 2 不会在联接表上级联删除



我们有这种关系:

public class RuleProviderEntity implements Serializable
{
    ...
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @OrderColumn(name = RuleEntity.RULE_SEQUENCE)
    private List<RuleEntity> rules;
}

仅此功能创建一个带有2个键和Rule_Sequence列的联接表。到目前为止很好,适合选择。

现在有一个JQL查询

DELETE FROM RuleProviderEntity WHERE ...

但这无法级联删除RuleEntity行。它只是删除了RuleProviderEntity并保持RuleEntity完整。

这应该在JPA 2中工作,这是一个冬眠的错误,还是我在配置中缺少某些内容?

我知道我可以添加 @JoinTable,但它只会覆盖默认值。
另外orphanRemoval似乎没有必要。
也许我可以使用@PreRemove进行解决方法,但不确定如何。

您的意思是发出JPQL批量删除查询吗?而不是em.remove()

批量删除查询永远不会尊重级联语义,也不是打算(也不会使托管对象与数据存储保持一致(。如果要级联,则需要致电em.remove()。如果有疑问,请看一下JPA规格

相关内容

  • 没有找到相关文章

最新更新