【发布时间】:2016-04-24 22:05:55
【问题描述】:
第一个问题:
我的应用中有以下域类:
class Test {
...
String name
static hasMany = [evaluationsTest: Evaluation]
...
}
class Evaluation {
...
String testName
Float testScore
...
}
我需要获取特定测试的分数范围(例如:分数在 7-8 之间的评估)之间的评估次数。
有一个标准我可以正确获得:
def criteria = Test.createCriteria()
def example = criteria.list {
eq 'name', params.test
evaluationsTest {
ge("testScore", 7 as Float)
lt("testScore", 8 as Float)
}
projections {
count()
}
}
但我想知道异步搜索,因此我想使用 DetachedCriteria 但它不起作用。
DetachedCriteria detached = Test.where {
name == params.test
evaluationsTest {
ge("testScore", 7 as Float)
lt("testScore", 8 as Float)
}
.projections {
count()
}
} as DetachedCriteria
def result = detached.async.list()
已编辑:使用 withCriteria() 方法解决。
第二个问题:
此外,我还有一个疑问。我需要并行化这段代码。我该怎么做每个片段?我曾经task,但有时会工作,有时会出现错误:Array Index Out of Bounds Exception
// Rows
def rows = []
def addRow = { name, value ->
rows << [c: [[v: name], [v: value]]]
}
// Add departments
departments.each { department ->
addRow(department.name, department.users.size())
}
def UDData = [cols: cols, rows: rows]
通过这段代码(任务),我得到:数组索引越界
List queriesToExecute = []
// Add departments - Asynchronous/Multi-thread
departments.each { department ->
def departmentTask = tasks {
rows << [c: [[v: department.name], [v:department.users.size()]]]
}
queriesToExecute << departmentTask
}
waitAll(queriesToExecute)
【问题讨论】:
-
“不起作用”是什么意思?请添加相关错误/stacktraces/...
标签: hibernate grails grails-orm criteria grails-2.0