1

我们有这样的关系:

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

仅此一项就创建了一个带有 2 个键和 RULE_SEQUENCE 列的连接表。到目前为止很好并且适用于 SELECTs。

现在有一个 JQL 查询

DELETE FROM RuleProviderEntity WHERE ...

但这无法级联删除RuleEntity行。它只是删除RuleProviderEntityRuleEntity保持原样。

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

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

4

1 回答 1

3

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

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

于 2017-04-27T06:28:05.100 回答