如何在Grails中更改BigDecimal的精度

Wal*_*mar 7 grails grails-orm

我在域中使用BigDecimal作为类型.如果我检查数据库中生成的模式(mySql),则列类型为十进制(19,2).我可以通过使用Domain类中的约束来更改它(如Grails文档中所述),如:

static constraints = {
     salary (scale: 3, maxSize:32)
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何在我的应用程序中为BigDecimal类型的所有字段定义scale和maxSize?

我已经尝试过在config.groovy中定义它

grails.gorm.default.constraints = {
    '*'(scale:10, size:32, class:BigDecimal)
}
Run Code Online (Sandbox Code Playgroud)

或者像那样:

grails.gorm.default.mapping = {
    '*'(scale:10, size:32, class:BigDecimal)
}
Run Code Online (Sandbox Code Playgroud)

不幸的是它不起作用.

Grails vesion是2.2.2.

Sri*_*dam 7

缩放约束允许您控制:

...
BigDecimal myNum

static constraints = {
   myNum(scale: 6)
}
...
Run Code Online (Sandbox Code Playgroud)

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


Oli*_*ver 6

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

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

grails.gorm.default.constraints = {
  myCustomScale( scale: 10, max: 9999999999999999999999.99999999 )
}
Run Code Online (Sandbox Code Playgroud)

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

static constraints = {      
  myField shared: 'myCustomScale'
}
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助