1

たとえば、ドメイン クラスに金額を格納するとします。簡単なアプローチは次のようになります。

class Account {
    BigDecimal amount
}

BigDecimalしかし、金額を単純なものとして処理するのではなくMoney、たとえば通貨換算などの追加の便利なメソッドを定義した型として処理したい場合はどうでしょうか。

だから何か

class Account {
    Money amount
}

別のテーブルに格納されることになります。

私の質問はMoney、データベースに BigDecimal として格納されるクラスをどのように定義できますか?

4

1 に答える 1

1

埋め込みクラスを使用してMoney、テーブル内に格納される別のクラスを持つことができAccountます。

class Account {
    Money amount
    static embedded = ['amount']
}

class Money {
    BigDecimal amount

    def asDollar() {
        amount
    }

    def asEuro() {
        amount / 1.3
    }
}

両方のクラス (AccountMoney) をドメイン フォルダー内の 1 つの groovy ファイルに配置して、お金のために余分なテーブルを作成しないようにします。

別のアプローチは、カスタムのhibernate typeを使用することです。

于 2013-10-26T11:25:21.727 に答える