2013-09-04 2 views
0

У меня есть приложение Grails, в котором я обрабатываю XML-файл и используя проанализированные данные для создания объектов и сохранения их в базе данных MySQL.Значение поплавка не сохраняется в базе данных

Один из моих классов имеет Float свойство:

class Foo { 
    // ... 
    Float myFloat 

    static constraints = { 
     myFloat(scale: 9) // Trying to specify 9 digits of precision, but this doesn't seem to be making any difference 
    } 

    // ... 
} 

Хотя разбор XML я пришел к атрибуту со значением 6378137. Я хочу, чтобы присвоить это значение myFloat:

class MyService{ 
    // ... 

    def xml = new XmlParser().parseText(myXmlFile.getText()) 

    def foo = new Foo(
     myFloat: xml.attribute("my_float")?.toFloat() 
    ).save() 

    // ... 
} 

На данный момент в отладчике я вижу значение myFloat является 6378137.0. Проблема в том, что после совершения транзакции значение, хранящееся в базе данных, равно 6378140.

Почему не myFloat хранится со значением, которое присваиваю ему?

+0

Что такое тип данных соответствующего столбца? –

+0

@JamesKleeh тип данных 'float'. – ubiquibacon

ответ

1

Вы должны установить точность и масштаб в GORM/спящий режим ..

посмотреть в ссылке ниже ...

http://appfuse.547863.n4.nabble.com/appfuse-user-hibernate-and-decimal-column-precision-td548279.html

+0

Это дает мне некоторое представление о том, что происходит, но мне сложно перевести свой ответ на условия Grails. Я попытался использовать [шкалу] (http://grails.org/doc/latest/ref/Constraints/scale.html), но это, похоже, не имеет никакого значения. Есть идеи? – ubiquibacon

Смежные вопросы