私は、オブジェクト型がいくつかありうるフィールドを持つオブジェクトを持っています。このオブジェクトは、フィールドのサブタイプの識別子カラムを持つ単一のテーブルにエンコードされます。これらのサブタイプのそれぞれは、そのフィールドが親オブジェクト表の列にマップされています。私はこれを冬眠中にモデル化することはできません。コードにはgetSubfield()
のサブタイプのデータがテーブルにあるかどうかにかかわらずヌルが返されます。Hibernate組み込み可能な継承
スキーマ
id type whosit whatsit +----+------+--------+---------+ | 1 | "A" | "test" | null | | 2 | "B" | null | "test" | +----+------+--------+---------+
ドメインが
@Entity
public class Parent {
protected @Id @GeneratedValue int id;
protected Subfield subfield;
public Subfield getSubfield() {return subfield;}
}
@Embeddable
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="type", discriminatorType=DiscriminatorType.STRING)
public abstract class Subfield {}
@DiscriminatorValue("A")
public class TypeA extends Subfield {
public String whosit;
}
@DiscriminatorValue("B")
public class TypeB extends Subfield {
public String whatsit;
}
オブジェクト
{id=1,subfield=null}
{id=2,subfield=null}
"親PからPを切り替えるには、" それはpossibです私がこのオブジェクトモデルで望むものを達成するために、あるいは私は少し創造的にする必要がありますか(これは従来のデータベースです。スキーマの変更は好ましくありません)
職場の同僚は私にhttp://opensource.atlassian.com/projects/hibernate/browse/HHH-1910を教えてくれました。私はそれがサポートされていないと思う= \ –