2015-02-23 40 views
0

對使用​​createCriteria創建的列表進行排序時遇到問題。 問題是,當我根據某個屬性對其值進行排序時,則整個對象將從列表中排除。 (排序參數通過可排序列傳遞)若要在createcritera.list中訂購空值

這是我的代碼示例。

SomeClass.createCriteria().list { 
eq('sth', sth) 
if (sort == 'someValue') { 
        nestedClass1 { 
        nestedClass2 { 
        nestedClass3 { 
         order('name', sortOrder) 
           } } } 
         }} 

問題是,例如當nestedCalss1爲null,則整個對象從列表

回答

3

協會查詢一樣,是內下降了默認連接,包括你需要使用左外連接空,你可以用createAlias

import org.hibernate.criterion.CriteriaSpecification 

SomeClass.createCriteria().list { 
    eq('sth', sth) 
    if (sort == 'someValue') { 
    createAlias("nestedClass1", "nc1", CriteriaSpecification.LEFT_JOIN) 
    createAlias("nc1.nestedClass2", "nc2", CriteriaSpecification.LEFT_JOIN) 
    createAlias("nc2.nestedClass3", "nc3", CriteriaSpecification.LEFT_JOIN) 
    order("nc3.name", sortOrder) 
    } 
} 
+0

它很有效果thnx!但是我怎樣才能讓我的列表中的最後一個按照列表的順序排列呢? – Mich 2015-02-23 16:32:11