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')
}
表示するには、次のリンクを表示するとき、私にありますどのように多くの結果を示していると私に知らせてしまうgetTotalCount方法でPagedResultListを返しません。結果の次のページ。むしろ閉鎖内DSLを使用するよりも、最大に合格し、list
に初期マップパラメータ経由でパラメータを相殺するために
actionsByUser = UserAction.createCriteria().list(max:max, offset:offset) {
projections {
countDistinct('id', 'userCount')
groupProperty('user')
}
order('userCount', 'desc')
}
すなわち変更:
は私の代わりにこのような何かを試してみました。で失敗:
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)
がどのように私は戻って「ページ1、nの」機能を実行するのに適してGrailsのからの結果を得ることができますか?
更新:Raised on Grails JIRAを提案しました - 私は#grails on freenodeで回答を得られませんでした。
で申し訳ありませんが、私はウントしませんよそれを忘れないでください。私はそれが私が与えた失敗例とどのように違うのかがはっきりしないのですか?私はあなたの提案(ちょうど最大とオフセットを2回指定しているようです)を試しても、同じ例外が発生します。私が何が欠けているのか理解してもらえますか? – jabley
回答を更新しました... –
私の投影クエリは、最初のインスタンスでは動作しますが、2番目のインスタンスでは動作しません。私が見ることができる唯一の違いは、コードの2番目のビットで、 'PagedResultList'を得るために、最初のパラメータとして' Map'を介して 'max'と' offset'パラメータを渡していることです。 [ドキュメント](http://www.grails。org/doc/latest/ref/Domain%20Classes/createCriteria.html)。だから私の質問は "PagedResultListを取得しようとすると、なぜ投影クエリが動作しないのですか"と再定義される可能性があります。 – jabley