2013-07-13 51 views
0

我嘗試使用CreateCriteria來獲取一些ID。由於ListDistinct不支持分頁, 我在網上找到了一個解決方案來解決這個問題。 http://ondrej-kvasnovsky.blogspot.fr/2012/01/grails-listdistinct-and-pagination.htmlgrails在createcriteria上使用訂單

但我當我試圖取得與排序和順序我有一個異常的元素:

THIS_.DATE‘「的表情令’必須在這種情況下,結果列表; SQL語句:。 ..」

我的代碼:

class MyClassA { 

Date date 
static hasMany = [userList:User] 

} 


class User { 

    String login 

} 



class ResponseService { 

    def load(offset, max) { 

    def idList = MyClassA.createCriteria().list (max: max, offset: offset) { 
     projections { distinct ("id") } 
     userList{ 
     eq("login","toto") 

    } 
     order("date","desc") 
    } 

    if(idList) { 

    // fetch all Responses based on selected IDs 
    def results = MyClassA.getAll(idList) 
    return results 
    } 

    } 
} 

回答

1

的probem可能是你的結果是沒有日期列。 我沒有測試過,但看在這個問題後:What is the sql query for this?(先回答評論)我認爲,加入

property("date") 

您預測可以提供幫助。

----------------編輯----------------------------

下面是您的問題的完整ResponseService類。我還在您的預測條款中添加了property("id")

class ResponseService { 

    def load(offset, max) { 

     def idList = MyClassA.createCriteria().list (max: max, offset: offset) { 
      projections { 
       distinct ("id") 
       property("date") 
       property("id") 
      } 
      userList{ 
       eq("login","toto") 
      } 
      order("date","desc") 
     } 

     if(idList) { 

      // fetch all Responses based on selected IDs 
      def results = MyClassA.getAll(idList) 
      return results 
     } 

    } 
} 
+0

With「property(」date「)」我沒有例外,但是我提取的列表包含日期和沒有標識符。 我沒有精確它,但我想有一個按他們的日期排序的ID列表。 – Jils

+0

我不明白...... 1.什麼是CP? 2.爲什麼你的ID不是唯一的...? 3.如果你的ID不是唯一的,這意味着同一個ID可能有幾個不同的日期。那麼你想要分類哪一個呢? – kpater87

+0

對不起,我的第二和第三個問題。他們很愚蠢。我沒有注意到你正在加入來自兩個表的數據。我修改了我的答案。所以現在它應該適合你。 – kpater87

相關問題