我们有这种关系:
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规格