我写了两个hibernate查询:
现在,如何合并这两个查询?我的返回类型必须是TypedQuery
答案 0 :(得分:0)
完全复制https://stackoverflow.com/a/3940445/929701的答案:
你可以使用id in(select from from ...)或id in(select id from ...)
e.g。而不是不工作
from Person p where p.name="Joe"
union
from Person p join p.children c where c.name="Joe"
你可以做到
from Person p
where p.id in (select p1.id from Person p1 where p1.name="Joe")
or p.id in (select p2.id from Person p2 join p2.children c where c.name="Joe");
至少使用MySQL,你会遇到性能问题。有时候让一个穷人加入两个问题更容易:
//使用set来表示唯一性 设置people = new HashSet((List)query1.list()); people.addAll((List)query2.list()); 返回new ArrayList(people); 通常两个简单的查询比一个复杂的查询更好。
答案 1 :(得分:0)
UNION语句不适用于Hibernate。
所以你可以:
执行第一个查询并输入一个列表;
执行第二个查询并输入一个列表;
将第一个和第二个列表的结果放在一个唯一的列表中。
如果要删除重复的值,则必须以编程方式执行。