我正在尝试让我们的 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 中检索它。
- 我的问题是我永远无法将数字提交到我的数据库......在任何东西进入数据库之前抛出异常。