域类中使用的特殊数据类型

时间:2013-10-26 10:20:14

标签: grails gorm

想象一下,例如,您希望在域类中存储金额。一个简单的方法是这样的:

class Account {
    BigDecimal amount
}

但是,如果您不想将您的金额简单BigDecimal处理,而是以Money类型为例,那么您可以在其中定义一些额外的便利方法,例如货币转换。

类似

class Account {
    Money amount
}

会导致将其存储在另一个表中。

所以我的问题是:我如何定义一个将在数据库中存储为BigDecimal的类Money

1 个答案:

答案 0 :(得分:1)

您可以使用an embedded class创建一个单独的Money类,该类存储在Account表中。

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

class Money {
    BigDecimal amount

    def asDollar() {
        amount
    }

    def asEuro() {
        amount / 1.3
    }
}

将两个类(AccountMoney)放入域文件夹中的一个groovy文件中,以避免创建额外的表格。

另一种方法是使用custome hibernate type