给定一个由三个子实体 SubEntityA、SubEntityB 和 SubEntityC 扩展的 SuperEntity,您能否对 SuperEntity 执行条件查询以只检索 SubEntityB 和 SubEntityC 的实例?
使用 InheritanceType.SINGLE_TABLE,您可以设置一个鉴别器值,我相信该值用于查询。 InheritanceType.JOINED 是如何完成的?
最佳答案
a) 您可以包括(冗余)@DiscriminatorColumn
/@DiscriminatorValue
也在 JOINED 实体层次结构中。
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
) 收集所有感兴趣的实体。
关于java - hibernate/JPA : How to find sub entities using InheritanceType. 已加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26631827/