Ich habe ein Objekt mit einem Feld, das eine Anzahl von Objekttypen sein kann. Dieses Objekt ist in einer einzigen Tabelle mit einer Diskriminatorspalte für die Subtypen des Feldes codiert. Für jeden dieser Subtypen sind die Felder einer Spalte in der übergeordneten Objekttabelle zugeordnet. Ich kann das nicht im Winterschlaf modellieren. Der folgende Code gibt Null für getSubfield()
zurück, unabhängig davon, welche Datentypen in der Tabelle enthalten sind.Hibernate Embeddable Inheritance
Schema
id type whosit whatsit +----+------+--------+---------+ | 1 | "A" | "test" | null | | 2 | "B" | null | "test" | +----+------+--------+---------+
Domain Objekte
@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;
}
"p von den Eltern SELECT p"
{id=1,subfield=null}
{id=2,subfield=null}
Ist es possib le, um zu erreichen, was ich will mit diesem Objektmodell, oder muss ich ein bisschen kreativer (das ist eine ältere Datenbank, Änderung des Schemas ist nicht bevorzugt)
Ein Kollege bei der Arbeit wies mich auf http://opensource.atlassian.com/projects/hibernate/browse/HHH-1910. Ich denke, es wird nicht unterstützt = \ –