我有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" true 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请求,因为(不同,加入,订购)不能处于同一级别的togehter。我在SQL开发人员中午餐。此请求没有(不同的,加入,订单)的工作正常。我该怎么办。愿我可以在"不同的选择"级别中强迫冬眠(加入,不同)和(顺序)?我如何包装另一个选择?
select *
from
(select
distinct id,
secondfield
from
FIRST as firsts
inner join
SECOND
... on ...
where(......))
order by
(......)
您可以尝试Groovy.sql。*,它比HQL查询给您很多摩尔的灵活性。
尝试以下操作:http://groovy.codehaus.org/tutorial 6 - sql