如何在Grails中更改BigDecimal的精度

时间:2014-01-09 14:58:11

标签: grails gorm

我在域中使用 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。

2 个答案:

答案 0 :(得分:6)

缩放约束允许您控制:

...
BigDecimal myNum

static constraints = {
   myNum(scale: 6)
}
...

http://grails.org/doc/latest/ref/Constraints/scale.html

答案 1 :(得分:6)

我发现这样做的最好方法如下:

在Config.groovy中,您可以定义以下内容:

grails.gorm.default.constraints = {
  myCustomScale( scale: 10, max: 9999999999999999999999.99999999 )
}

在您的域对象中添加以下约束:

static constraints = {      
  myField shared: 'myCustomScale'
}

您可以在需要的所有BigDecimal字段中使用此约束。 如果您需要调整比例(比如针对特定客户),您可以通过在配置中更改它来控制它。

希望这有帮助