我有3个班级:第一,第二,第三 我的createria大概是这样的:
First.createCriteria().listDistinct {
if(....){fetchMode("second", FetchMode.JOIN)
fetchMode("second.third", FetchMode.JOIN)}
order(sortOrder, orderBy)
order("id", "desc")
}
(当“if”为false时,createCriteria正常工作)
当“if”为真时Hibernate生成了像这样的SQL请求
select
distinct id,
secondfield
from
FIRST as firsts
inner join
SECOND
... on ...
inner join
THIRD
... on ...
where(...)
order by
firsts.name asc
firsts.id desc
但是所以sql请求无法执行,因为(distinct,join,order by)不能在同一级别上执行。 我在SQL开发人员中吃午饭。没有(distinct,join,order by)之一的请求工作正常。 我该怎么办? 我可以在“不同的SELECT”级别强制执行hibernate do(join,distinct)和(order)吗? 我如何用另一个SELECT包装SELECT?
select *
from
(select
distinct id,
secondfield
from
FIRST as firsts
inner join
SECOND
... on ...
where(......))
order by
(......)
答案 0 :(得分:0)
您可以尝试使用Groovy.SQL。*,这比HQL查询提供了更多的灵活性。