我在域中使用 BigDecimal 作为类型。如果我检查数据库中生成的模式(mySql),则列类型为 decimal(19,2)。 我可以通过使用Domain类(as decribed in Grails documentation)中的约束来更改它,如:
static constraints = {
salary (scale: 3, maxSize:32)
}
我的问题是:如何在我的应用程序中为BigDecimal类型的所有字段定义scale和maxSize?
我已经尝试在config.groovy中定义它
grails.gorm.default.constraints = {
'*'(scale:10, size:32, class:BigDecimal)
}
或者那样:
grails.gorm.default.mapping = {
'*'(scale:10, size:32, class:BigDecimal)
}
不幸的是它不起作用。
Grails vesion是2.2.2。
答案 0 :(得分:6)
缩放约束允许您控制:
...
BigDecimal myNum
static constraints = {
myNum(scale: 6)
}
...
答案 1 :(得分:6)
我发现这样做的最好方法如下:
在Config.groovy中,您可以定义以下内容:
grails.gorm.default.constraints = {
myCustomScale( scale: 10, max: 9999999999999999999999.99999999 )
}
在您的域对象中添加以下约束:
static constraints = {
myField shared: 'myCustomScale'
}
您可以在需要的所有BigDecimal字段中使用此约束。 如果您需要调整比例(比如针对特定客户),您可以通过在配置中更改它来控制它。
希望这有帮助