当前位置: 首页 > 面试题库 >

Hibernate:发现:浮动,预期:双精度

万俟皓
2023-03-14
问题内容

Oracle Float双精度数据类型到Java Double数据类型的映射存在问题。使用Java Double数据类型时,hibernate模式验证器似乎失败。

org.hibernate.HibernateException: Wrong column type in DB.TABLE for column amount. Found: float, expected: double precision

避免这种情况的唯一方法是禁用架构验证,并希望架构与即将运行的应用程序同步。在投入生产之前,必须对其进行修复。

应用程序的环境: -Grails 1.2.1 -Hibernate-core 3.3.1.GA -Oracle 10g


问题答案:

需要更多信息。桌子是双人床吗?我不熟悉Oracle,但这是浮点类型吗?java.sql.Types它翻译成什么类型?您可以在java.sql.Types数据库的方言类中看到到数据库类型的映射。在这种情况下org.hibernate.dialect.Oracle10gDialect(扩展9i和8i)。看起来你有

registerColumnType( Types.DOUBLE, "double precision" );

因此,通常需要将表定义为double precision,并将java类定义为将映射到的对象。Types.Double``double

从错误消息看来,您的表已定义为float将使用此映射的表

registerColumnType( Types.FLOAT, "float" );

为此Types.FLOAT,通常期望的java类型将映射到该类型float; 单个精度值。

最简单的方法是更改​​表或java类以使其匹配。或者,您可以指定将单个精度值映射到双精度值的用户类型。我想不出为什么您会真正想要这样做,但是我想,也许如果您无法同时控制类和表,那是非常罕见的。

hth。



 类似资料:
  • 问题内容: 我将内存中的HSQL(HSQLDB)与Hibernate一起用于所有单元测试,因为它非常快。我有一个表,其中的列定义如下: hibernate启动时,出现以下错误: 为什么在将列声明为时找到? 问题答案: 这是由于 一系列不幸事件而发生的 。 问题始于HSQLDB不支持数据类型的事实 。(是吗?是的,我知道,但是这里的文档。) 由于HSQLDB 在指定列时不会简单 失败,而是将其默默地

  • 单精度浮动值和双精度浮动值有什么区别?

  • 问题内容: 如何使用正则表达式从字符串中提取双精度值。 问题答案: 这是简单的方法。请勿将regex用于内置类型。

  • 问题内容: 我需要从相对表中获取全部数据,所以我正在使用这种方式(我会在sql中使用它) 启动此代码后,我得到了该错误: org.hibernate.hql.internal.ast.QuerySyntaxException:期望IDENT, 在第1行第10列附近 找到“ * ” [SELECT R. FROM offerOrderProjectRel R,offerOrder O,项目P WHE

  • 问题内容: 如何使用正则表达式从字符串中提取双精度值。 问题答案: 是简单的方法。请勿将regex用于内置类型。

  • 问题内容: 是否有比浮点精度更好的数据类型? 问题答案: 小数数据类型 与基于硬件的二进制浮点数不同,十进制模块具有用户可更改的精度(默认为28位),可以与给定问题所需的精度一样大。 如果您对性能问题感到困扰,请查看GMPY