0
私は継承戦略を使用しています:表ディスクリミネータを使用するサブクラス戦略ごとです。コレクションは、サブクラスごとにディスクリミネータを使用してサブクラスでは使用できません
私のPOJOクラス
public abstract Class A{
...
}
public Class B extends A{
private List <D> collection
......
}
public Class C extends A{
..........
}
public class D{
.........
}
のHibernateのマッピング以下のように、私は以下の例外 要素型の内容を取得しています
<hibernate-mapping>
<class name="A" entity-name="A"
abstract="true" discriminator-value="ABS_A"
table="A">
<id name="id" type="java.lang.String">
<column not-null="true" unique="false" name="`ID`" />
</id>
<discriminator type="string">
<column name="`ABS_A_DISCRIMINATOR`" index="A_discriminator"
length="255" not-null="true" />
</discriminator>
........................
</class>
<subclass extends="A" entity-name="B"
name="B"
discriminator-value="B">
<join table="B" fetch="select">
<key><column name="ID" /></key>
<list name="collection" table="B_D" cascade="all" lazy="true">
<key column="ID" />
<list-index column="idx" />
<many-to-many entity-name="D" unique="false">
</many-to-many>
</list>
....................
</join>
</subclass>
<subclass extends="A" entity-name="C"
name="C"
discriminator-value="C">
<join table="C" fetch="select">
<key><column name="ID" /></key>
................
</join>
</subclass>
<class name="D" entity-name="D" table="D">
.....................
</class>
<hibernate-mapping>
の下に "参加" として(」一致している必要があります(sql-insert?、sql-update?、sql-delete?) ")のいずれかを使用します。
もしjoinタグがlist/set/idbag/bagを許さないならば、これを達成する他の方法はありますか?私はdiscriminator戦略なしでサブクラスごとのテーブルを使うときに不必要な結合が起こるためこの問題に遭遇しました。
注:厳密には、正規化されたdbモデルが必要です。
事前に感謝します!...