如果SuperEntity由三个子实体 SubEntityA , SubEntityB 和 SubEntityC 扩展,可以对SuperEntity执行条件查询仅检索 SubEntityB 和 SubEntityC 的实例?
使用InheritanceType.SINGLE_TABLE,您可以设置我认为用于查询的鉴别器值。如何使用InheritanceType.JOINED完成?
答案 0 :(得分:2)
a)您也可以在JOINED实体层次结构中包含(冗余)@DiscriminatorColumn
/ @DiscriminatorValue
。
b)您可以使用JPQL type
运算符:http://en.wikibooks.org/wiki/Java_Persistence/JPQL#JPQL_special_operators,例如SELECT se FROM SuperEntity se WHERE TYPE(se) <> SubEntityA
c)使用多个查询(SELECT se FROM SubEntityB se
+ SELECT se FROM SubEntityC se
)来收集所有感兴趣的实体。