【问题标题】:Annotation for all-delete-orphan in hibernate 4.1.4hibernate 4.1.4 中 all-delete-orphan 的注解
【发布时间】:2015-10-22 18:05:43
【问题描述】:

我是这个休眠注释的新手。我想把这个 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。

【问题讨论】:

  • 在你的@OneToMany中使用orphanRemoval=true

标签: hibernate annotations hibernate-mapping hibernate-annotations all-delete-orphan


【解决方案1】:

是的,在Hibernate 4.1.4 版本中delete-orphan 已弃用,现在在HibernateJPA 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为例,你只需要指定映射的另一端类中使用的字段名,例如:

@ManyToOne
private MyClass theOneSide;

请查看 inverse=true in JPA annotations 了解更多信息。

【讨论】:

  • 我怀疑如何为“inverse = true”添加注释
  • 您可以简单地将 mappedBy 属性添加到 @OneToMany 注释中,它将替换 inverse="true"
  • 它显示为“注释类型 OneToMany 的属性 orphanRemoval 未定义”..
  • 也许您使用的是旧版本的 Hibernate?你确定它是4.1.4吗?您可以在the OneToMany Documentation 中看到它声明它自 JPA2.0 以来就存在,并确保它的拼写正确orphanRemoval,还确保您导入了javax.persistence.OneToMany;
  • 如果你使用 mappedBy,那么你必须删除级联
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 2012-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多