gpt4 book ai didi

grails - findAll()HQL不返回grails中的分页列表

转载 作者:行者123 更新时间:2023-12-01 09:57:34 27 4
gpt4 key购买 nike

我正在开发一个 grails 应用程序,在此我必须在 list.gsp 上应用过滤器框。当我使用以下查询(在我的服务中)进行过滤时,我得到了分页列表:

    def clientCriteria = TripOrder.createCriteria()
def searchResults = clientCriteria.list(max: params.max, offset: params.offset, sort: params.sort, order: params.order){
ilike("origin", "${searchFor}%")
}
println searchResults.getTotalCount()
[searchResults: searchResults, searchResultSize: searchResults.getTotalCount()]

但我的问题是,当我使用findAll时,我无法得到分页列表,查询如下:

def searchResults =  TripOrder.findAll("from TripOrder as t where t.status.status=:status", [status: searchFor], [max: maximum, sort: params.sort, order: params.order])

println searchResults.size()

[searchResults: searchResults, searchResultSize: searchResults.size()]

注意:由于某些原因,我必须使用 findAll() HQL 而不是条件查询。

以上结果仅提供等于最大数量的列表,而不是提供分页列表

请提供使用 findAll() 获取分页列表的解决方案。

谢谢。

最佳答案

根据您的评论,您可以在获得 PagedResultList

的地方这样做
def results = TripOrder.createCriteria.list(params) {
customer {
ilike 'firstName', "%$searchFor%"
}
}

assert results.size() != results.totalCount

如果您想坚持使用 findAll 或类似 findAll 而不是标准,它基本上会触发另一个查询 totalCount,那么您可以使用 DetachedCriteria 吸收更好的选择>/where query 懒惰地按需执行查询。同样,您将无法在第一个查询中获得总数。你必须为此解雇另一个人。

def query = TripOrder.where {
customer.firstName =~ searchFor
}

//Query executed only when list() is called
def results = query.list( params )

//Only executed when count() is called
def totalCount = query.count()

关于grails - findAll()HQL不返回grails中的分页列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22668609/

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