2012-02-16 79 views

回答

3

Derived properties

例從上面的鏈接

class Product { 
    Float price 
    Float taxRate 
    Float tax 
    static mapping = { 
     tax formula: 'PRICE * TAX_RATE' 
    } 
} 
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. 如果您僅希望在它的創建,而不是更新,然後取出beforeUpdate總結field3
  2. 如果你正在做比這個簡單的總和更復雜的計算,把它們扔在另一種方法(如updateField3),並調用它,而不是硬編碼它。
+0

我認爲這種方法對於瞬態屬性很好,但如果需要查詢,標準和持久性,公式仍然是更好的選擇。 – 2012-02-16 09:31:18

+1

我完全同意 - 這就是爲什麼我給你+1!當你發佈時我剛寫完了我的文章,所以我只是張貼了我的完整性。 – OverZealous 2012-02-16 09:44:13

相關問題