Sha*_*ilu 5 annotations hibernate hibernate-mapping hibernate-annotations all-delete-orphan
我是这个hibernate注释的新手.我想将此xml映射转换为注释:
<map name="Text" table="JAV_TEXT" inverse="true" cascade="all-delete-orphan">
<key column="FK_GUID"/>
<map-key column="TEXT_GUID" type="string"/>
<one-to-many class="com.TextPO"/>
</map>
Run Code Online (Sandbox Code Playgroud)
这就是我所做的:
@OneToMany(fetch = FetchType.LAZY, targetEntity=com.TextPO.class)
@Cascade({CascadeType.DELETE_ORPHAN})
@JoinColumn(name="FK_GUID")
@MapKey(name="TEXT_GUID")
private Map<String, PersistentObject> text = new HashMap<String, PersistentObject>();
Run Code Online (Sandbox Code Playgroud)
但是CascadeType.DELETE_ORPHAN已被弃用,那么我如何all-delete-orphan通过注释来表示?我正在使用hibernate 4.1.4.
是在Hibernate 4.1.4版本delete-orphan已过时,现在Hibernate和JPA 2.0可以使用orphanRemoval,而不是:
@OneToMany(orphanRemoval = true)
Run Code Online (Sandbox Code Playgroud)
你的映射应该是这样的:
@OneToMany(fetch = FetchType.LAZY, targetEntity=com.TextPO.class, orphanRemoval = true)
@JoinColumn(name="FK_GUID")
@MapKey(name="TEXT_GUID")
private Map<String, PersistentObject> text = new HashMap<String, PersistentObject>();
Run Code Online (Sandbox Code Playgroud)
并删除@Cascade注释,您可以将其用作@OneToMany注释的属性,如下所示:
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, targetEntity=com.TextPO.class, orphanRemoval = true)
Run Code Online (Sandbox Code Playgroud)
请查看此示例以进一步阅读.
编辑:
要inverse="true"在映射中提供属性,只需mappedBy在OneToMany@annotation中指定属性即可引用关系的拥有部分,如下所示:
@OneToMany(fetch = FetchType.LAZY, targetEntity=com.TextPO.class, orphanRemoval = true, mappedBy= "theOneSide")
Run Code Online (Sandbox Code Playgroud)
这里theOneSide用作示例,您只需要指定映射的另一个侧面中使用的字段名称,例如:
@ManyToOne
private MyClass theOneSide;
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅JPA注释中的inverse = true.
| 归档时间: |
|
| 查看次数: |
4906 次 |
| 最近记录: |