hibernate 4.1.4 中 all-delete-orphan 的注解
Annotation for all-delete-orphan in hibernate 4.1.4
我是这个休眠注解的新手。我想将此 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>
这是我所做的:
@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>();
但是 CascadeType.DELETE_ORPHAN
已被弃用,那么如何通过注释表示 all-delete-orphan
呢?
我正在使用休眠 4.1.4.
是的,在 Hibernate 4.1.4
版本中 delete-orphan
已弃用,现在在 Hibernate
和 JPA 2.0
中,您可以使用 orphanRemoval
代替:
@OneToMany(orphanRemoval = true)
你的映射应该是这样的:
@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>();
同时删除 @Cascade
注释,您可以将其用作 @OneToMany
注释的属性,如下所示:
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, targetEntity=com.TextPO.class, orphanRemoval = true)
查看 this Example 进一步阅读。
编辑:
要在你的映射中给出 inverse="true"
属性 你只需要在你的 @OneToMany
注释中指定 mappedBy
属性来引用关系的拥有部分,像这样:
@OneToMany(fetch = FetchType.LAZY, targetEntity=com.TextPO.class, orphanRemoval = true, mappedBy= "theOneSide")
这里以theOneSide
为例,您只需指定映射另一端class使用的字段名即可,例如:
@ManyToOne
private MyClass theOneSide;
查看 inverse=true in JPA annotations 了解更多信息。
我是这个休眠注解的新手。我想将此 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>
这是我所做的:
@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>();
但是 CascadeType.DELETE_ORPHAN
已被弃用,那么如何通过注释表示 all-delete-orphan
呢?
我正在使用休眠 4.1.4.
是的,在 Hibernate 4.1.4
版本中 delete-orphan
已弃用,现在在 Hibernate
和 JPA 2.0
中,您可以使用 orphanRemoval
代替:
@OneToMany(orphanRemoval = true)
你的映射应该是这样的:
@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>();
同时删除 @Cascade
注释,您可以将其用作 @OneToMany
注释的属性,如下所示:
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, targetEntity=com.TextPO.class, orphanRemoval = true)
查看 this Example 进一步阅读。
编辑:
要在你的映射中给出 inverse="true"
属性 你只需要在你的 @OneToMany
注释中指定 mappedBy
属性来引用关系的拥有部分,像这样:
@OneToMany(fetch = FetchType.LAZY, targetEntity=com.TextPO.class, orphanRemoval = true, mappedBy= "theOneSide")
这里以theOneSide
为例,您只需指定映射另一端class使用的字段名即可,例如:
@ManyToOne
private MyClass theOneSide;
查看 inverse=true in JPA annotations 了解更多信息。