添加两个字段并在grails的域类中插入第三个字段

时间:2012-02-16 08:35:51

标签: grails

我正在开发一个grails项目,其中我有一个包含3个字段的域类。我的要求是只输入2个字段,第3个字段将填充两个字段的总和。任何人都可以发给我代码。 thnks

2 个答案:

答案 0 :(得分:3)

请参阅Derived properties

以上链接中的示例

class Product {
    Float price
    Float taxRate
    Float tax
    static mapping = {
       tax formula: 'PRICE * TAX_RATE'
    }
 }

答案 1 :(得分:2)

根据您的需要,这里有两种完整的方法。

如果您不需要存储第三个字段,这意味着它仅用于显示,您可以这样做:

class MyDomain {
    int field1
    int field2

    static transients = ['field3']

    getField3() {
        field1 + field2
    }
}

这样您就可以myDomain.field3访问总和。

如果你需要存储它,比如因为它在计算中被大量使用,你可以使用事件来自动计算和存储总和,如下所示:

class MyDomain {
    int field1
    int field2
    int field3

    def beforeInsert() {
        field3 = field1 + field2
    }

    def beforeUpdate() {
        field3 = field1 + field2
    }
}

这样做的好处是,无论创建或更新 ,都会填充第三个字段。

两个注释:

  1. 如果您只想在创建时加field3而不是更新,请删除beforeUpdate
  2. 如果您正在进行比简单求和更复杂的计算,请将它们放在另一种方法中(例如updateField3),然后调用它而不是硬编码。