2014-01-09 7 views
7

Ich verwende BigDecimal in Domänen als Typ. Wenn ich das generierte Schema in der Datenbank (mySql) überprüfe, ist der Spaltentyp dezimal (19,2). Ich kann es ändern, indem Einschränkungen in der Domain-Klasse (as decribed in Grails documentation) wie:So ändern Sie die Genauigkeit von BigDecimal in Grails

static constraints = { 
    salary (scale: 3, maxSize:32) 
} 

Meine Frage ist: Wie kann die Skala und maxSize für alle Felder des Typs BigDecimal in meiner Anwendung definieren?

Ich habe bereits versucht, es in der config.groovy so, dass

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

oder dergleichen zu definieren:

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

Leider funktioniert es nicht.

Grails vesion ist 2.2.2.

Antwort

6

Die Skala Einschränkung ermöglicht es Ihnen, diese zu steuern:

... 
BigDecimal myNum 

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

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

+1

Die Herausforderung besteht darin, für alle Eigenschaften des Typs BigDecimal zu definieren. (ALL = in der gesamten Anwendung) – Waldemar

6

Die beste Weise, die ich dies zu tun gefunden ist folgende:

In Ihrem Config.groovy definieren Sie die folgenden :

grails.gorm.default.constraints = { 
    myCustomScale(scale: 10, max: 9999999999999999999999.99999999) 
} 

In Ihrem Domain-Objekt fügen Sie die fol Muhen contraint:

static constraints = {  
    myField shared: 'myCustomScale' 
} 

Sie dieses contraint für alle BigDecimal Felder verwenden können, wo nötig. Wenn Sie die Waage anpassen müssen (sagen wir für einen bestimmten Kunden), können Sie dies durch Ändern in der Konfig ändern.

Hoffe, dies hilft

Verwandte Themen