java - 尝试在 Oracle 中绑定(bind) double.max_value 时发生溢出

标签 java oracle hibernate

我试图让我们的 Hibernate 应用程序在 Oracle 11g 上运行,但在尝试保留 double.max_value 时,我们不断收到以下错误:

Caused by: java.sql.SQLException: Internal Error: Overflow Exception trying to bind 1.7976931348623157E308
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:263)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:271)
at oracle.jdbc.driver.DoubleBinder.bind(OraclePreparedStatement.java:15676)
at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2948)
at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:2202)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3382)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3468)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2437)
... 11 more

有人知道为什么我们不能坚持这个值吗?

我们只在 Oracle 中遇到这个问题 - Postgres 和 H2 工作正常。

我们尝试将 Oracle 数据类型强制为 Number 和 Binary_Double,但结果相同。我们使用 Hibernate 3 和 Oracle 11g,以及 oracle jdbc 驱动程序和 OracleSpatial10g 方言。

(我是 Hibernate 和 Oracle 新手,因此非常感谢任何帮助。)

编辑:到目前为止有一些有用的评论,但我仍然没有弄清楚我的问题。以下是更多信息:

  • 我发现可以使用 BINARY_DOUBLE 将数字直接插入数据库。我使用 sqlfiddle 并使用 SQLDeveloper 通过本地数据库进行了尝试。我还可以在 SQLDeveloper 中检索它。
  • 我的问题是我无法将数字提交到我的数据库...在任何内容进入数据库之前都会抛出异常。

最佳答案

正如@Tomas的answer所述,有一个数据类型 binary_double ,它的最大值就是您需要的值。

以下是如何将 1.7976931348623157E308 作为数值插入到表中

create table t1 (big_val binary_double);
insert into t1 values( cast('1.7976931348623157E308' as binary_double) );

关于java - 尝试在 Oracle 中绑定(bind) double.max_value 时发生溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145288/

相关文章:

java - 通过使用 Maven 或其他工具以各种组合运行 junit 测试来缩小错误测试的范围

java - flatMap 的方法级通用类型

java - 如何在 spring 和 hibernate 中将组合键从 Controller 传递到 jsp ?

hibernate - 在Grails中,如何获取域代理而不是完整记录

Java需要正则表达式只能是英文字符。数字和可打印标志

java - 将 WebSphere 转换为 Liferay 项目

sql - 使用 keep dense_rank 查找单个值

oracle - 在 PL/SQL 中将二进制转换为 varchar

sql - 单列SUM,不是单组群函数

hibernate - 为什么 Hibernate Tools hbm2ddl 生成不考虑 Bean Validation 注释?