Grails2.0持久化BigDecimal的问题
我试图在一个全新的Grails2.0应用程序中保留一个大十进制数,但它的行为完全不是我所期望的 我制作了一个名为Grails2.0持久化BigDecimal的问题,grails,h2,bigdecimal,Grails,H2,Bigdecimal,我试图在一个全新的Grails2.0应用程序中保留一个大十进制数,但它的行为完全不是我所期望的 我制作了一个名为l2bigdec的新应用程序,并添加了这个域类: package l2bigdec class PlayMe { BigDecimal imStupidOrSomething static constraints = { } } 然后我将此代码放入引导程序: import l2bigdec.* class BootStrap { def init = { serv
l2bigdec
的新应用程序,并添加了这个域类:
package l2bigdec
class PlayMe {
BigDecimal imStupidOrSomething
static constraints = {
}
}
然后我将此代码放入引导程序:
import l2bigdec.*
class BootStrap {
def init = { servletContext ->
def thisThingIHate = new PlayMe(imStupidOrSomething:0.912345).save(failOnError:true)
println thisThingIHate.imStupidOrSomething
PlayMe.withSession{it.clear()}
def getItBack = PlayMe.find{it}
println getItBack.imStupidOrSomething
}
def destroy = {
}
}
其中打印:
0.912345
0.91
为什么不同时打印0.912345?我不懂BigDecimal吗?缩放约束允许您控制以下内容:
...
BigDecimal myNum
static constraints = {
myNum(scale: 6)
}
...
如果我真的想要一个大十进制而不是四舍五入的浮点,它需要保留我给它的每一个数字,该怎么办?这在2.0中不再可能了吗?我是否可以设置一个更大的默认比例,这样我就不必在项目中搜索更新每个bigdecime了?如果您针对的是特定的RDBMS,某些RDBMS具有可以使用的任意精度类型(
NUMERIC
,例如,在PostgreSQL中),否则,我知道不容易保留任意数字。我也不知道有哪一个点可以设置默认比例。如果BigDecimal属性名称在不同类中相似,则可以使用grails.gorm.default.constraints
,如下所述: