Hibernate 5 + JPA 2 不会通过连接级联删除 table

Hibernate 5 + JPA 2 doesn't cascade delete over join table

我们有这样的关系:

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

仅此一项就创建了一个包含 2 个键和 RULE_SEQUENCE 列的联接 table。到目前为止还不错,适用于 SELECT。

现在有一个 JQL 查询

DELETE FROM RuleProviderEntity WHERE ...

但这无法级联删除 RuleEntity 行。它只是删除 RuleProviderEntity 并保持 RuleEntity 不变。

这是否应该在 JPA 2 中工作并且它是一个 Hibernate 错误,还是我在配置中遗漏了什么?

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

您是说发出了 JPQL 批量删除查询?而不是 em.remove().

批量删除查询永远不会尊重级联语义,也不打算这样做(也不会使内存中的托管对象与数据存储区保持一致)。如果你想要级联那么你需要调用em.remove()。如果对此有疑问,请查看 JPA 规范。