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 を使用して、数値を DB に直接挿入できることがわかりました。SQLDeveloperを使用して、sqlfiddleとローカルデータベースで試しました。SQLDeveloper で取得することもできます。
- 私の問題は、番号をデータベースにコミットできないことです...何かがデータベースに入る前に例外がスローされます。