如何在 HQL
中执行此 Mysql
查询:
select id , date from TABLE_1
union all
select id , date from TABLE_2
order by date asc
我知道 union
的替代方法是发出两个单独的请求,但我想要 union
和 order by
因为它会有所帮助我很多。
最佳答案
您可以将查询分离
为两个查询,然后合并
将两个结果列表合并为一个,最后使用
:排序
最终列表>比较器
Query query1 = session.createQuery("select t.id,t.dt from Table1 t");
Query query2 = session.createQuery("select t.id,t.dt from Table2 t");
List list1= query1.list();
List list2= query2.list();
list1.add(list2);
Collections.sort(list1, new Comparator<TABLE>(){
public int compare (Table t1, Table t2){
return t1.getDate().compareTo(t2.getDate());
}
});
编辑(评论后):在 UNION
的情况下(当查询使用 UNION
而不是 union all 并且也没有 Order By
) 我们可以使用 HashSet:
Query query1 = session.createQuery("select t.id,t.dt from Table1 t");
Query query2 = session.createQuery("select t.id,t.dt from Table2 t");
List list1= query1.list();
List list2= query2.list();
list1.add(list2);
HashSet uniqueResult = new HashSet(list1);
关于mysql - UNION 与 HQL 中的排序依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28754440/