想象一下,我有以下问题:
def result = Test.createCriteria().list(params) {
// image here a lot of assocs, criterias, ...
}
在许多情况下,您需要上面查询的行数,例如列出许多控制器的动作。
def resultTotal = Test.createCriteria().list(params) {
// Imagine here a lot of assocs, criterias, ...
// Change to the criteria above is only the projection block
projections { rowCount() }
}
我该如何避免这种情况?
答案 0 :(得分:0)
你可以:
static namedQueries = {
byLocation { Location location ->
if (location) {
... // some more criteria logic
}
}
}
答案 1 :(得分:0)
如果您没有对查询结果进行分页,则可以在调用第一个查询后执行以下操作:
def resultTotal = result?.size()
答案 2 :(得分:0)
对于在许多地方使用的同一组查询,我将它们创建为闭包并将其委托更改为相关条件。 例如:
def query = {
projections{
rowCount()
}
eq('type', myType)
}
def criteria = Customer.createCriteria()
query.delegate = criteria
myType = CustomerType.guest
List records = criteria.list(params) {
query()
}
答案 3 :(得分:0)
我像这样使用totalCount:
def list() {
def myInstanceList = MyInstance.createCriteria().list(params){
eq('name', params.name)
}
[myInstanceList: myInstanceList, myInstanceListTotal: myInstanceList.totalCount]
}