我们有这种关系:
printf("First Data Set: \n");
for (int i = 0; x[i] != SENTINEL; i++) {
printf("Input Data Value %d> \n", i+1);
scanf_s("%f", &x[i]);
}
仅此一项就会创建一个包含2个键和RULE_SEQUENCE列的连接表。到目前为止很好,适用于SELECT。
现在有一个JQL查询
public class RuleProviderEntity implements Serializable
{
...
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@OrderColumn(name = RuleEntity.RULE_SEQUENCE)
private List<RuleEntity> rules;
}
但是这无法级联删除DELETE FROM RuleProviderEntity WHERE ...
行。它只会删除RuleEntity
并保持RuleProviderEntity
完好无损。
这应该在JPA 2中工作,它是一个Hibernate错误,还是我在配置中遗漏了什么?
我知道我可以添加RuleEntity
,但它只会覆盖默认值
此处似乎没有必要@JoinTable
也许我可以使用orphanRemoval
进行解决方法但不确定如何。
答案 0 :(得分:3)
您的意思是发出JPQL批量删除查询?而不是em.remove()
。
批量删除查询绝不会尊重级联语义,也不是为了(也不会使内存中的托管对象与数据存储区保持一致)。如果您想要级联,则需要致电em.remove()
。如果对此有疑问,请参阅JPA规范。