grails: min-Einschränkung und die Attribute von BigDecimal (type mismatch?)
In der grails-Klasse, ich habe angegeben
BigDecimal amount
repräsentieren einen Betrag von Geld in einer Transaktion.
Klicken Sie dann im Abschnitt Einschränkungen, die ich angegeben:
amount ( nullable:false, min : 100)
Um anzuzeigen, dass der Mindestbetrag angenommen werden würde, einen dollar. Dies stellt gerade fein, aber Laufzeitumgebung eine Art Unverträglichkeit Fehler:
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]
So bin ich sicher davon ausgehen, dass ich nicht angeben, min-Werte auf BigDecimal Attribute?
Danke!
Alexx
Du musst angemeldet sein, um einen Kommentar abzugeben.
Grails erwartet, dass die min und max Werte denselben Datentyp haben, wie der zugehörige Eigenschaft während der Skala Wert ist immer eine ganze Zahl sein. Casting zu BigDecimal oder hinzufügen .0 an das Ende der Wert, der das problem behebt.
Ich vor kurzem eingereicht IntelliJ IDEA bug-report IDEE-75471 über genau dieses Problem. IDEE 10.5.2 falsch kennzeichnet eine Inspektion Warnung, wenn der min und max Werte sind nicht integer und die Skala Wert ist nicht der gleiche Datentyp wie die Eigenschaft hat. Die Warnung kann ignoriert werden, mit
//noinspection GroovyAssignabilityCheck
.Grooviger Besetzung der min-Wert sollte auch funktionieren.
oder möglicherweise
Interessant. Jeder der "min" - Werte, die ich angegeben auf BigDecimal-Attribute wurden abgelehnt. Ich sagte, Sie alle heraus, und implementierte die app erfolgreich. Ich habe versucht, in der Wende auf ".0" am Ende ein min-Wert und die app neu aufgebaut und neu bereitgestellt werden. Eins nach dem anderen, wiederholte ich dies, mit Ausnahme der letzten, kommentierte min. So dann habe ich auskommentiert, wie es war, min : 0, und die app brach.
Also ich denke, das ist die Antwort, dass, wenn Sie nicht haben eine dezimale Teil in Ihrer min (oder max, ich würde auch davon ausgehen), muss einer Hinzugefügt werden.