2012-02-25 17 views
5

Yepyeni bir derecelendirme 2.0 uygulamasında bir BigDecimal'i sürdürmeye çalışıyorum ve beklediğim gibi davranmıyor.Grails 2.0 sorun devam ediyor BigDecimal

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 = { 
    } 
} 

yazdırır:

0.912345 
0.91 

ben bootstrap bu kodu koymak Sonra

package l2bigdec 

class PlayMe { 
    BigDecimal imStupidOrSomething 
    static constraints = { 
    } 
} 

:

Ben yeni uygulama l2bigdec denilen ve bu etki alanı sınıfını eklemek yapmak Neden iki kere 0.912345 yazdırmıyor? BigDecimal anlamıyorum?

cevap

10

ölçekli kısıt bunu kontrol etmenizi sağlar:

... 
BigDecimal myNum 

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

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

+0

Ne ben aslında yuvarlak şamandıra bir BigDecimal değil istiyorsanız ve bunu vermek her haneyi korumak için ihtiyacı varsa? Bu artık 2.0'da mümkün mü değil? – Mikey

+0

Daha büyük bir varsayılan ölçek ayarlayabilir miyim, bu yüzden her BigDecimal'i güncelleyerek projemde arama yapmak zorunda kalmam mı gerekiyor? – Mikey

+0

Belirli bir RDBMS'yi hedefliyorsanız, bazılarının kullanabileceği isteğe bağlı kesinlik türleri vardır (örneğin, PostgreSQL'de NUMERIC). Aksi halde, keyfi basamakları korumanın kolay bir yolu yoktur. Ayrıca, varsayılan ölçeği ayarlamak için tek bir noktadan haberdar değilim. BigDecimal özellik adlarınız sınıflar arasında benzerse, burada açıklanan 'grails.gorm.default.constraints' komutunu kullanabilirsiniz: http://grails.org/doc/latest/ref/Constraints/Usage.html –

İlgili konular