grails:min约束和BigDecimal类型的属性(类型不匹配?)

grails:min约束和BigDecimal类型的属性(类型不匹配?),grails,constraints,min,Grails,Constraints,Min,在grails类中,我指定了 BigDecimal amount 表示交易中的金额 然后,在约束部分,我指定: amount ( nullable:false, min : 100) 表明接受的最低金额为一美元。这可以正常编译,但运行时会引发类型不兼容错误: 2011-10-26 15:17:06,116 [main] ERROR validation.ConstrainedProperty - Exception thrown applying constraint [min

在grails类中,我指定了

BigDecimal  amount
表示交易中的金额

然后,在约束部分,我指定:

amount      ( nullable:false, min : 100)
表明接受的最低金额为一美元。这可以正常编译,但运行时会引发类型不兼容错误:

2011-10-26 15:17:06,116 [main] ERROR validation.ConstrainedProperty  - Exception thrown applying constraint [min] to class [class com.mycorp.mypkg.MyProprietaryDefinition] for value [100]: Parameter for constraint [min] of property [amount] of class [class  com.mycorp.mypkg.MyProprietaryDefinition] must be the same type as property: [java.math.BigDecimal]
那么,我是否可以安全地假设我不能在BigDecimal属性上指定最小值

谢谢大家!

亚历克斯很有趣。我在BigDecimal属性上指定的任何“min”值都被拒绝。我将它们全部注释掉,并成功部署了应用程序。我尝试将“.0”附加到一分钟值的末尾,然后重新构建并重新部署应用程序。我一个接一个地重复了这一点,只保留了最后一个注释的min。然后我取消了它的注释,min:0,应用程序就坏了

所以我想这就是答案,如果你的最小值(或最大值,我也假设)没有小数部分,你需要加一个。

有趣。我在BigDecimal属性上指定的任何“min”值都被拒绝。我将它们全部注释掉,并成功部署了应用程序。我尝试将“.0”附加到一分钟值的末尾,然后重新构建并重新部署应用程序。我一个接一个地重复了这一点,只保留了最后一个注释的min。然后我取消了它的注释,min:0,应用程序就坏了


所以我想这就是答案,如果你的最小值没有小数部分(或者最大值,我也假设),你需要添加一个。

对最小值进行groovy转换也应该有效

 min: 0 as BigDecimal
或者可能

 min: 0G

将groovy强制转换为最小值也应该有效

 min: 0 as BigDecimal
或者可能

 min: 0G
Grails希望最小值和最大值与关联属性的数据类型相同,而比例值始终要求为整数。转换为BigDecimal或将.0添加到值的末尾可以修复此问题

amount(nullable: false, min: 100.0, max: 9999.99, scale: 2)
我最近就这个问题提交了IntelliJ IDEA错误报告。IDEA 10.5.2如果最小值和最大值不是整数,且刻度值与属性的数据类型不同,则错误地标记检查警告。使用
//noinspection GroovyAssignabilityCheck

可以忽略该警告,Grails希望最小值和最大值与关联属性的数据类型相同,而刻度值始终要求为整数。转换为BigDecimal或将.0添加到值的末尾可以修复此问题

amount(nullable: false, min: 100.0, max: 9999.99, scale: 2)
我最近就这个问题提交了IntelliJ IDEA错误报告。IDEA 10.5.2如果最小值和最大值不是整数,且刻度值与属性的数据类型不同,则错误地标记检查警告。使用
//noinspection groovyasignabilitycheck
可以忽略该警告