Hibernate / JPA:如何使用InheritanceType.JOINED查找子实体

时间:2014-10-29 13:36:59

标签: java sql database hibernate jpa

如果SuperEntity由三个子实体 SubEntityA SubEntityB SubEntityC 扩展,可以对SuperEntity执行条件查询仅检索 SubEntityB SubEntityC 的实例?

使用InheritanceType.SINGLE_TABLE,您可以设置我认为用于查询的鉴别器值。如何使用InheritanceType.JOINED完成?

1 个答案:

答案 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)来收集所有感兴趣的实体。