grails:min约束和BigDecimal类型的属性(类型不匹配?)
在grails类中,我指定了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
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
可以忽略该警告