mysql - 浮点值未正确保存到数据库

标签 mysql hibernate grails floating-point

我有一个 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 没有与我分配给它的值一起存储?

最佳答案

您必须在 GORM/hibernate 中设置精度和小数位数..

查看下面的链接...

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

关于mysql - 浮点值未正确保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18624411/

相关文章:

php - 从mysql数据库中删除特定用户记录

mysql - 如何使用 mysqldump 转储默认时间戳值?

java - 使用 native SQL Hibernate 从存储过程中检索值

grails - 如何在Grails中找出已连接的客户端IP地址

maven - 如何在Nexus上使用GrailsCentral

php - 在 php 字符串中添加换行符以使其在 mysql 数据库中显示的正确方法

mysql - 如何在 Oracle 中设置变量然后在查询中重用它?

java - Spring JUnit 测试中未调用 Hibernate 监听器

java - 启用@EnableGlobalMethodSecurity 后,Hibernate 无法再获取 session

validation - 对关联的 'hasMany' 对象进行 Grails 验证