Estoy usando la herencia de una sola tabla, una entidad principal:
@Entity @Table(name = "parent") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "type") public class Parent { // ... }y dos entidades secundarias:
@Entity @DiscriminatorValue("child1") public class Child1 extends Parent { @Column(name = "child1_property") private Integer child1Property; // ... } @Entity @DiscriminatorValue("child2") public class Child2 extends Parent { @Column(name = "child2_property") private Integer child2Property; // ... } Ahora, si consulto (HQL) directamente desde la entidad Child1 :
from Child1 generará un SQL que selecciona solo las Parent de la entidad principal más la entidad Child1 . Si selecciono de la entidad principal usando un tipo de lugar = ' Parent where type='child1'
from Parent p where type(p)='child1' devolverá solo entidades Child1 pero la consulta SQL selecciona todas las columnas de Parent , Child1 y Child2 . ¿Existe la posibilidad de consultar desde la entidad principal? Utilice la columna discriminadora (es decir, limite solo a las entidades Child1 ) y obtenga una consulta SQL específica, es decir, que seleccionará solo las columnas de Parent Child1 Parent