Pau*_*lan 130 java orm hibernate jpa jpa-2.0
我在使用带有以下映射的JPA删除孤立节点时遇到问题
@OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "owner")
private List<Bikes> bikes;
Run Code Online (Sandbox Code Playgroud)
我遇到了挂在数据库周围的孤立角色的问题.
我可以使用注释org.hibernate.annotations.Cascade
Hibernate特定标记,但显然我不想将我的解决方案绑定到Hibernate实现.
编辑:似乎JPA 2.0将包括对此的支持.
Var*_*hta 158
如果您将它与Hibernate一起使用,则必须明确定义注释CascadeType.DELETE_ORPHAN
,该注释可与JPA结合使用CascadeType.ALL
.
如果您不打算使用Hibernate,则必须先明确删除子元素,然后删除主记录以避免任何孤立记录.
执行顺序
使用JPA 2.0,您现在可以使用选项orphanRemoval = true
@OneToMany(mappedBy="foo", orphanRemoval=true)
Run Code Online (Sandbox Code Playgroud)
Kan*_*o_V 112
如果您使用的是JPA 2.0,则现在可以使用注释的orphanRemoval=true
属性@xxxToMany
来删除孤立.
实际上,CascadeType.DELETE_ORPHAN
已经在3.5.2-Final中弃用了.
Ser*_*hyk 44
???????????????????????????????????????????????????????????
? Action ? orphanRemoval=true ? CascadeType.ALL ?
???????????????????????????????????????????????????????????
? delete ? deletes parent ? deletes parent ?
? parent ? and orphans ? and orphans ?
???????????????????????????????????????????????????????????
? change ? ? ?
? children ? deletes orphans ? nothing ?
? list ? ? ?
???????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
uı6*_*uɐp 12
如果您将JPA与EclipseLink一起使用,则必须设置@PrivateOwned注释.
文档:Eclipse Wiki - 使用EclipseLink JPA扩展 - 第1.4章如何使用@PrivateOwned注释
小智 7
您可以使用@PrivateOwned删除孤儿,例如
@OneToMany(mappedBy = "masterData", cascade = {
CascadeType.ALL })
@PrivateOwned
private List<Data> dataList;
Run Code Online (Sandbox Code Playgroud)
我只是找到了这个解决方案,但在我的情况下它不起作用:
@OneToMany(cascade = CascadeType.ALL, targetEntity = MyClass.class, mappedBy = "xxx", fetch = FetchType.LAZY, orphanRemoval = true)
Run Code Online (Sandbox Code Playgroud)
orphanRemoval = true没有效果。
归档时间: |
|
查看次数: |
163835 次 |
最近记录: |