在GRAILS 2.3.x中的命名查询中使用投影时,如何进行更复杂的计算



我在域类中使用带有投影的命名查询。我希望命名查询使用以下等式返回其中一个值:

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
        }
    }
}

最新更新