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

时间:2014-04-29 21:06:42

标签: grails gorm grails-domain-class

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

sum(x * y) / sum(y)

我熟悉映射中的公式并尝试执行以下操作:

def formVar

static mapping = {    
    formulaVar formula: 'sum(x * y) / sum(y)'
}

这里的任何帮助都很棒。

2 个答案:

答案 0 :(得分:1)

我可能会误解您的问题,但您可能想查看beforeUpdate和beforeInsert事件。

此块中的代码允许您在插入/更新它们之前预先形成计算并操作域类属性。

Grails手册http://grails.org/doc/2.3.7/guide/GORM.html#eventsAutoTimestamping

中记录了这一点

答案 1 :(得分:1)

行。得到这样的工作:

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