Ho un oggetto con un campo che può essere un numero di tipi di oggetto. Questo oggetto è codificato in una singola tabella con una colonna discriminante per i sottotipi del campo. Ognuno di questi sottotipi ha i propri campi associati a una colonna nella tabella degli oggetti padre. Non riesco a modellare questo in letargo. Il codice qui sotto restituirà null per getSubfield()
indipendentemente dai dati del sottotipo nella tabella.Ereditarietà embeddable Hibernate
Schema
id type whosit whatsit +----+------+--------+---------+ | 1 | "A" | "test" | null | | 2 | "B" | null | "test" | +----+------+--------+---------+
Domain Objects
@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 da padre p"
{id=1,subfield=null}
{id=2,subfield=null}
È possib le per ottenere ciò che voglio con questo modello di oggetti, o ho bisogno di essere un po 'più creativo (questo è un database legacy, cambiare lo schema non è preferito)
Un collega al lavoro mi ha indirizzato a http://opensource.atlassian.com/projects/hibernate/browse/HHH-1910. Suppongo che non sia supportato = \ –