Java 条件:搜索两个不同的实体类

Java 条件:搜索两个不同的实体类,java,criteria,Java,Criteria,我有一个“超级实体”超级实体和三个实体ChildEntity1,…,ChildEntity3,它扩展了超类 很容易搜索数据库中的所有实体,即我们可以使用 session.createCriteria(SuperEntity.class); 搜索一种特定的实体类型也没有问题,只需将SuperEntity替换为任何子实体即可查找该类型的实体 但我在允许对类型进行“多选”时遇到了一个问题。也就是说,可能有必要搜索类型1和2的所有实体,但不搜索类型3的实体 第一个想法是创建两个独立的查询并将结果合并到

我有一个“超级实体”超级实体和三个实体ChildEntity1,…,ChildEntity3,它扩展了超类

很容易搜索数据库中的所有实体,即我们可以使用

session.createCriteria(SuperEntity.class);
搜索一种特定的实体类型也没有问题,只需将SuperEntity替换为任何子实体即可查找该类型的实体

但我在允许对类型进行“多选”时遇到了一个问题。也就是说,可能有必要搜索类型1和2的所有实体,但不搜索类型3的实体

第一个想法是创建两个独立的查询并将结果合并到最终列表中,但这会破坏使用偏移量的分页并限制数据库的功能

条件中是否有可能将两个不同的查询合并到一个结果列表中

亲切问候,


RoCMe

在HQL中可能是这样的(不确定它是否在所有情况下都有效):


在Criteria API中,您可以使用它。

一种方法是创建一个数据库视图,该视图合并两个表的结果,然后为该视图创建一个模型类,并在此基础上使用hibernate。通过这种方式,您可以进行分页,因为视图在这方面就像一个表,您可以对组合结果进行排序和限制。

我阅读API的方式也表明Criteria API不适合这里。这里显示的HQLAPI对于此类查询更灵活。
from SuperEntity e where e.class in [ChildEntity1, ChildEntity2]