私は 3 つのクラスを持っています: 1 番目、2 番目、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
ただし、(distinct、join、order by) を同じレベルにすることはできないため、SQL リクエストは実行できません。SQL開発者でランチします。(distinct、join、order by) のいずれも使用しないこの要求は正常に機能します。これで何ができますか。「異なるSELECT」レベルで休止状態に(結合、個別)および(順序)を強制することはできますか?SELECT を別の SELECT でラップするにはどうすればよいですか?
select *
from
(select
distinct id,
secondfield
from
FIRST as firsts
inner join
SECOND
... on ...
where(......))
order by
(......)