Sam*_*Sam 5 mysql sql hibernate jpa h2
@Entity public class Organization {
@OneToOne(fetch = FetchType.EAGER)
@OnDelete(action = OnDeleteAction.CASCADE)
@Cascade(value = DELETE_ORPHAN)
private Days days;
}
Run Code Online (Sandbox Code Playgroud)
我有以下实体定义,它生成一个SQL,在父对象被删除时对@OneToOne条目进行级联删除.但是删除组织时不会删除"days"条目.
这种情况发生在h2,mysql数据库中,这可能是什么问题.
好吧,我想你应该添加一个
@Cascade(value = {DELETE, DELETE_ORPHAN})
Run Code Online (Sandbox Code Playgroud)
请注意,在JPA 2.0中,您不必使用hibernate-sepcific @Cascade注释 - @*ToMany有一个删除孤儿的选项.
更新:使用查询时,不会处理级联.你必须手动处理它们.这是预期和记录的行为.
我的查询看起来像这样"从组织中删除some_key_id =?" (我不是根据主键ID删除它)
批量删除(你应该在你的问题中提到)不会级联到任何东西.引用JPA 1.0规范:
4.10批量更新和删除操作
...
删除操作仅适用于指定类及其子类的实体.它不会级联到相关实体.
这是一个非常烦人的限制,有很多RFE可以改善(HHH-695,HHH-1917,HHH-3337,HHH-5529等).
目前,可能的解决方案包括:
现在奇怪的部分......我的理解@OnDelete(action = OnDeleteAction.CASCADE)是这个注释应该用于确保使用适当的ON DELETE CASCADE子句创建外键(解决方案#2).换句话说,我希望事情能发挥作用.
Hibernate生成了Organization表吗?你能看看DDL吗?你看到了预期的ON DELETE CASCADE吗?如果没有,请添加它.
| 归档时间: |
|
| 查看次数: |
2264 次 |
| 最近记录: |