我正在尝试几天从我的数据中收到一个列表。域看起来像这样:
class Alpha {
String a
String b
etc.
static hasMany = [beta:Beta]
}
class Beta {
String a
Integer foo
String status
static belongsTo = [alpha:Alpha]
static constraints = {
status(nullable:false, inList:["val1","val2","val3", "val4"])
}
}
我想在Alpha中获得所有Beta.foo和所有Beta.foo在某种状态下的总和。最好的是一个额外的行(Integer sumVal1 ...
)。
我尝试过命名查询:
static namedQueries = {
erledigterProbeAufwend {
createAlias ('Beta', 'b')
eq ('b.status', 'val1')
projections {
groupProperty('b.alpha')
sum('b.foo', 'sumFooVal1')
}
}
}
但这只是一次给我一笔钱。
我期待得到一些帮助。
问候 BAS
答案 0 :(得分:3)
可以formula field计算,但subquery trick:
static mapping = {
betaCount formula: "(SELECT count(*) FROM Beta b WHERE b.alpha_id = id and b.status in('a', 'b'))"
}
答案 1 :(得分:0)
在Alpha类中创建瞬态变量,并在onLoad事件中填充它们。
class Alpha {
String a
String b
etc.
static transients = ["sumVal1",...]
static hasMany = [beta:Beta]
def onLoad = {
sumVal1 = ....
}
}