【问题标题】:Can you combine controller list params with Hibernate criteria?您可以将控制器列表参数与 Hibernate 标准结合起来吗?
【发布时间】:2013-10-04 16:40:10
【问题描述】:

我注意到您可以将“params”直接传递到下面的样板代码中:

[fooInstanceList: Foo.list(params), fooInstanceTotal: Foo.count()]

是否可以将“参数”作为 Hibernate 标准的一部分传递,例如下面的标准?

def c = Foo.createCriteria()
    def results = c {
        not { eq("bar","test") }
    }

    [fooInstanceList: results, fooInstanceTotal: results.size()]

我希望使用“max”和“offset”参数,例如,我可以将其用于分页。我还想使用等价的 count 来计算所有非分页结果。我认为 results.size() 只会给我分页结果,而不是所需的非分页结果。我该怎么办?

【问题讨论】:

    标签: java hibernate grails grails-orm


    【解决方案1】:

    您可以在使用条件时使用params。我想你有一个错字没有使用c.list

    def c = Foo.createCriteria()
    def results = c.list(params) {
        not { eq("bar","test") }
    }
    

    假设paramsmaxoffset

    Criteria 返回一个 PagedResultList,您可以从中获取 totalCount。所以

    results.totalCount //results.getTotalCount()
    

    应该给你总计数,尽管总是会触发第二个查询来获取总计数。在这种情况下,Hibernate 会为您执行此操作,而不是您显式执行此操作。

    【讨论】:

    • 感谢您的回答。我也意识到我需要计算非分页结果。 results.size() 只会给我分页结果的大小。我已将这一点添加到原始问题中。
    猜你喜欢
    • 1970-01-01
    • 2014-03-10
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    相关资源
    最近更新 更多