2012-10-22 65 views
2
一層

我有3類:第一,第二,第三 我有createria大約是這樣的:休眠個createCriteria JOIN,ORDER,DISTINCT從

First.createCriteria().listDistinct { 
      if(....){fetchMode("second", FetchMode.JOIN) 
      fetchMode("second.third", FetchMode.JOIN)} 
      order(sortOrder, orderBy) 
      order("id", "desc") 
} 

(當 「如果」 假,個createCriteria正常工作)

當這樣

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請求「如果」真Hibernate生成SQL請求不能被執行,因爲(不同,連接,通過順序)不能在同級別。 我在SQL開發人員午餐。這個請求沒有(獨特的,加入,排序)的工作正常。 我可以用這個做什麼。 可以通過我可以在「不同的SELECT」級別強制hibernate做(join,distinct)和(order)嗎? 如何可以通過另一個SELECT換行SELECT?

select * 
from 
    (select 
    distinct id, 
    secondfield 
    from 
    FIRST as firsts 
    inner join 
    SECOND 
      ... on ... 
    where(......)) 
order by 
    (......) 

回答