gpt4 book ai didi

hibernate - Grails GORM-使用聚合函数时如何获取PagedResultList

转载 作者:行者123 更新时间:2023-12-02 14:55:25 26 4
gpt4 key购买 nike

我从grails 1.2.1开始使用GORM。此时没有升级的机会。这本身不是grails应用程序;而是一个使用groovy并利用GORM进行简单域模型持久化的Webapp。

我有这样的查询:

actionsByUser = UserAction.createCriteria().list() {
projections {
countDistinct('id', 'userCount')
groupProperty('user')
}
firstResult(offset)
maxResults(max)
order('userCount', 'desc')
}

那并没有返回带有getTotalCount方法的PagedResultList,该方法将指示有多少结果,并让我知道何时显示下一个链接以显示下一页结果。

我尝试了这样的事情:
actionsByUser = UserAction.createCriteria().list(max:max, offset:offset) {
projections {
countDistinct('id', 'userCount')
groupProperty('user')
}
order('userCount', 'desc')
}

即更改以通过初始Map参数将max和offset参数传递给 list,而不是在Closure中使用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取回适合执行“n页1”功能的结果?

更新:按照建议的 Raised on Grails JIRA-我没有在freenode上的#grails上得到响应。

最佳答案

它没有很好的记录,但是将分页参数放在createCriteria.list([in here!])中,这应该返回一个PagedResultList
例...

def result=Thing.createCriteria().list(max:params.max, offset:params.offset){
maxResults(params.max)
firstResult(params.offset)
}

[更新]

您的错误似乎是由于查询 could not resolve property: userCount无效。再看看您的投影查询。 乍看之下似乎还不错,Grails 1.2中似乎解决了 jira issue问题。

另外,这里有一些链接说明了记录不佳的PagedResultList ...

HereHere

关于hibernate - Grails GORM-使用聚合函数时如何获取PagedResultList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6760151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com