首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hibernate 4.1.4中的所有-删除-孤儿注释

hibernate 4.1.4中的所有-删除-孤儿注释
EN

Stack Overflow用户
提问于 2015-07-31 06:50:27
回答 1查看 6.8K关注 0票数 6

我对hibernate注释很陌生。我想将这个xml映射转换为注释:

代码语言:javascript
复制
<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>

这就是我所做的:

代码语言:javascript
复制
@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?我正在使用hibernate 4.1.4。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-31 07:28:25

是的,在Hibernate 4.1.4版本中,delete-orphan是不推荐的,现在在HibernateJPA 2.0中,您可以使用orphanRemoval

代码语言:javascript
复制
@OneToMany(orphanRemoval = true)

您的映射应该如下所示:

代码语言:javascript
复制
@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注释的属性,如下所示:

代码语言:javascript
复制
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, targetEntity=com.TextPO.class, orphanRemoval = true)

看一看这个例子的进一步阅读。

编辑:

要在映射中提供inverse="true"属性,只需在@OneToMany注释中指定mappedBy属性,以引用关系的所属部分,如下所示:

代码语言:javascript
复制
@OneToMany(fetch = FetchType.LAZY, targetEntity=com.TextPO.class, orphanRemoval = true, mappedBy= "theOneSide")

这里使用theOneSide作为示例,只需指定映射的另一个侧类中使用的字段名,例如:

代码语言:javascript
复制
@ManyToOne
private MyClass theOneSide;

有关更多信息,请查看JPA注释中的inverse=true

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31739752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档