我在域类中使用带有投影的命名查询。我希望命名查询使用以下等式返回其中一个值:
sum(x * y) / sum(y)
我熟悉映射中的公式,并尝试做以下操作:
def formVar
static mapping = {
formulaVar formula: 'sum(x * y) / sum(y)'
}
这里的任何帮助都会很棒。
我可能误解了您的问题,但您可能想查看beforeUpdate和beforeInsert事件。
放置在此块中的代码将允许您在插入/更新域类属性之前预处理计算和操作它们。
Grails手册中对此进行了说明http://grails.org/doc/2.3.7/guide/GORM.html#eventsAutoTimestamping
好。这样工作:
class SumThing {
Double sumVar
static namedQueries = {
sums { op ->
projections {
property "sumVar"
}
}
}
static mapping = {
version false
columns {
sumVar formula: 'SUM(X * Y) / SUM(Y)'//X and Y being actual column names from your database
}
}
}