grails在createcriteria上使用order



我尝试使用CreateCriteria来获取一些id。由于ListDistinct不支持分页,我在网上找到了一个解决方案来解决这个问题。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
    }
  } 
}

问题可能是在结果中没有日期列。我还没有测试过它,但在研究了这个问题之后:这个问题的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
        }
    } 
}

相关内容

  • 没有找到相关文章

最新更新