我使用grails 1.2.1中的GORM。目前沒有升級的機會。這本身不是Grails應用程序;相反,它是一個使用groovy並利用GORM實現簡單域模型持久性的web應用程序。Grails GORM - 使用聚合函數時如何獲得PagedResultList
我有這樣的查詢:
actionsByUser = UserAction.createCriteria().list() {
projections {
countDistinct('id', 'userCount')
groupProperty('user')
}
firstResult(offset)
maxResults(max)
order('userCount', 'desc')
}
不返回我PagedResultList與getTotalCount方法,這將表明多少結果也有,讓我知道什麼時候顯示下一個鏈接顯示結果的下一頁。
我想是這樣的,而不是:
actionsByUser = UserAction.createCriteria().list(max:max, offset:offset) {
projections {
countDistinct('id', 'userCount')
groupProperty('user')
}
order('userCount', 'desc')
}
即改變通過最大,並通過初始的地圖參數抵消參數list
,而不是使用封閉內的DSL。
失敗有:
org.hibernate.QueryException: could not resolve property: userCount of: example.domain.UserAction
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:67)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:61)
at org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1392)
at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:54)
at org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1367)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:457)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumnsUsingProjection(CriteriaQueryTranslator.java:417)
at org.hibernate.criterion.Order.toSqlString(Order.java:68)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getOrderBy(CriteriaQueryTranslator.java:371)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:113)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:82)
at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:91)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1578)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306)
at grails.orm.HibernateCriteriaBuilder.invokeMethod(HibernateCriteriaBuilder.java:1025)
我怎樣才能得到一個結果從Grails的是適合做「第1頁的n」的功能了?
更新:Raised on Grails JIRA建議 - 我沒有在freenode的#grails上得到回覆。
對不起,我不UND據此。我不清楚這與我給出的失敗案例有何不同?我試過你的建議(這似乎是指定最大和偏移兩次?),並仍然得到相同的例外。請你能幫我理解我錯過了什麼嗎? – jabley
我已經更新了我的答案... –
我的投影查詢在第一個實例中工作,但不在第二個實例中。 AFAICT唯一的區別是,我可以看到,在第二個代碼中,我通過'Map'作爲第一個參數傳遞'max'和'offset'參數,試圖獲得一個'PagedResultList'返回按照[文檔](http://www.grails。組織/ DOC /最新/ REF /域%20Classes/createCriteria.html)。所以我的問題可以重新定義爲「爲什麼不投影查詢工作,當我嘗試獲取PagedResultList」 – jabley