5

この休止状態の注釈は初めてです。この 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 を使用しています。

4

1 に答える 1

6

はい、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)

詳細については、この例を参照してください。

編集:

inverse="true"マッピングでプロパティを指定するには、次のように @ アノテーションで属性を指定して、mappedBy関係OneToManyの所有部分を参照するだけです。

@OneToMany(fetch = FetchType.LAZY, targetEntity=com.TextPO.class, orphanRemoval = true, mappedBy= "theOneSide")

ここでtheOneSideは、マッピングの反対側のクラスで使用されるフィールド名を指定する必要がある例として使用されます。たとえば、次のようになります。

@ManyToOne
private MyClass theOneSide;

詳細については、JPA アノテーションの inverse=trueをご覧ください。

于 2015-07-31T07:28:25.730 に答える