Mam obiekt z polem, które może być liczbą typów obiektów. Ten obiekt jest zakodowany w pojedynczej tabeli z kolumną dyskryminacyjną dla podtypów tego pola. Każdy z tych podtypów ma przypisane ich pola do kolumny w tabeli obiektów nadrzędnych. Nie mogę tego modelować w hibernacji. Kod poniżej zwróci wartość null dla getSubfield()
niezależnie od tego, jakie dane podtypu znajdują się w tabeli.Hibernate Embeddable Inheritance
Schema
id type whosit whatsit +----+------+--------+---------+ | 1 | "A" | "test" | null | | 2 | "B" | null | "test" | +----+------+--------+---------+
Domain Przedmioty
@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;
}
"SELECT P z macierzystej p"
{id=1,subfield=null}
{id=2,subfield=null}
Czy to możliwie pobiera le, aby osiągnąć to, czego chcę w tym modelu obiektowym, lub czy muszę uzyskać nieco więcej kreatywności (jest to starsza baza danych, zmiana schematu nie jest preferowana)
Kolega z pracy wskazał mi http://opensource.atlassian.com/projects/hibernate/browse/HHH-1910. Domyślam się, że nie jest obsługiwany = \ –