0

CreateCriteria を使用していくつかの ID を取得しようとしています。ListDistinct はページネーションをサポートしていないため、この問題を解決するソリューションを Web で見つけました。 http://ondrej-kvasnovsky.blogspot.fr/2012/01/grails-listdistinct-and-pagination.html

しかし、並べ替えと順序で要素を取得しようとすると、例外が発生しました。

「この場合、式による順序 "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
    }

  } 
}
4

1 に答える 1

3

問題はおそらく、結果に日付列がないことです。私はそれをテストしていませんが、この質問を見た後:これに対するSQLクエリは何ですか? (最初の回答へのコメント)追加すると思います

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
        }

    } 
}
于 2013-07-13T19:37:57.217 に答える