Tengo un objeto con un campo que puede ser una cantidad de tipos de objetos. Este objeto está codificado en una sola tabla con una columna discriminatoria para los subtipos del campo. Cada uno de estos subtipos tiene asignados sus campos a una columna en la tabla de objetos principales. Parece que no puedo modelar esto en Hibernate. El código siguiente devolverá nulo para getSubfield()
, independientemente de los datos de subtipo que haya en la tabla.Herencia incrustable Hibernate
esquema
id type whosit whatsit +----+------+--------+---------+ | 1 | "A" | "test" | null | | 2 | "B" | null | "test" | +----+------+--------+---------+
de objetos de dominio
@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 del padre p"
{id=1,subfield=null}
{id=2,subfield=null}
Es posib Para lograr lo que quiero con este modelo de objetos, o necesito ser un poco más creativo (esto es una base de datos heredada, cambiar el esquema no es el preferido)
Un colega en el trabajo me señaló http://opensource.atlassian.com/projects/hibernate/browse/HHH-1910. Supongo que no es compatible = \ –