带投影的CreateCriteria不会选择所有列

时间:2013-03-06 15:11:14

标签: grails projection createcriteria

我的问题完全一样 Grails Projections not returning all properties and not grouped

我有以下条件

def sharedDocumentsInstanceList SharedDocuments.createCriteria().list(params){
   createAlias('receiver', 'r')
   createAlias('author', 'a')
   eq("r.id",session.uid)  
   projections{
      groupProperty("a.id")
      property("a.firstName","firstName")
      property("a.lastName","lastName")
      property("a.emailAddress","email")
   }
}

其中sharedDocuments定义如下

class SharedDocuments {
   Users author
   Users receiver
   Documents file
}

我所看到的是sharedDocumentsInstanceList始终只有投影中提到的最后一个属性。我可以在“withCriteria”中使用相同的查询,但我似乎放弃了自动分页的常规优点,因为withCriteria没有返回分页的pagedresultlist!

2 个答案:

答案 0 :(得分:2)

为了那些仍然有这个问题的人;删除列表方法中提供的params对象。因此上面的标准查询变为:

def sharedDocumentsInstanceList = SharedDocuments.createCriteria().list {
    createAlias('receiver', 'r')
    createAlias('author', 'a')
    eq("r.id",session.uid)  
    projections {
        groupProperty("a.id")
        property("a.firstName","firstName")
        property("a.lastName","lastName")
        property("a.emailAddress","email")
    }
    maxResults(params.max)
    firstResult(params.offset)
    order(params.sort, params.order)
}

答案 1 :(得分:0)

    projections{                
        author {
           groupProperty("id")
           property("firstName","firstName")
           property("lastName","lastName")
           property("emailAddress","email")
        }
    }

使用上述方法会产生不同的结果吗?只是一个想法...