【发布时间】:2011-02-01 06:28:54
【问题描述】:
我在将 Oracle Float 双精度数据类型映射到 Java Double 数据类型时遇到问题。当使用 Java Double 数据类型时,休眠模式验证器似乎失败了。
org.hibernate.HibernateException: Wrong column type in DB.TABLE for column amount. Found: float, expected: double precision
避免这种情况的唯一方法是禁用架构验证,并希望架构与即将运行的应用同步。它必须在投入生产之前修复。
应用环境:
- Grails 1.2.1
- 休眠核心 3.3.1.GA
- 甲骨文10g
【问题讨论】:
-
您能否展示一下您实际上是如何映射此列的?顺便说一句,注意到您在投入生产前的最后几分钟,您只需确保在适当的时候就您的马虎测试您的应用程序得到诙谐的评论:-)
-
哈哈 :) 别担心,我在生产方面并不马虎。只要不修,就不会熄灭。无论如何,这是我同事遇到的一个错误,我只是想帮助他。好话虽然:)
-
我根据您的建议编辑了我的问题。谢谢。
-
恐怕你在这里走错路了。 Oracle SQL 没有任何数据类型,例如 double 或 float。列唯一允许的数字数据类型是
NUMBER。您可以使用 BINARY_DOUBLE 类型的参数调用 PL/SQL 过程,但这是不同的,这种数据类型不能存储在数据库中。如果您想安全起见,请将 Oracle 的 NUMBER(作为其子类型)映射到 Java 的 BigDecimal。
标签: hibernate validation grails database-schema