我的表架构是:
desc TRNX_TXN_MAP_VALUES
Name Null Type
------------------- -------- ---------------
BASE_TRANSACTION_ID NOT NULL NUMBER(19)
MAP_TYPE NOT NULL VARCHAR2(2)
ENUM_TYPE NOT NULL VARCHAR2(30)
DECIMALVALUE NUMBER(12,2)
STRINGVALUE VARCHAR2(100)
LONGVALUE NUMBER(19)
BOOLEANVALUE NUMBER(1)
DOUBLEVALUE NUMBER(38,2)
CURRENCYCODE VARCHAR2(20)
AMOUNT NUMBER(18,2)
DOUBLEARRAY DOUBLE_VARRAY()
在存储某些值时,我会遇到以下异常: 似乎某些值具有非常大的精度,并且它映射到的列确实支持它。这可能吗?我使用Oracle 11g作为我的数据库和Spring JdbcTemple来持久化。
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 1, parameter value [1264684185], value class [java.lang.Long], SQL type -5
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 2, parameter value [P], value class [java.lang.String], SQL type 12
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 3, parameter value [MTM], value class [java.lang.String], SQL type 12
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 4, parameter value [null], value class [null], SQL type 3
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 5, parameter value [null], value class [null], SQL type 12
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 6, parameter value [null], value class [null], SQL type -5
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 7, parameter value [null], value class [null], SQL type 4
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 8, parameter value [null], value class [null], SQL type 8
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 9, parameter value [USD], value class [java.lang.String], SQL type 12
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 10, parameter value [-287.0004000000008], value class [java.lang.Double], SQL type 8
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 1, parameter value [1264684185], value class [java.lang.Long], SQL type -5
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 2, parameter value [P], value class [java.lang.String], SQL type 12
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 3, parameter value [POTENTIAL_EXPOSURE], value class [java.lang.String], SQL type 12
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 4, parameter value [null], value class [null], SQL type 3
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 5, parameter value [null], value class [null], SQL type 12
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 6, parameter value [null], value class [null], SQL type -5
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 7, parameter value [null], value class [null], SQL type 4
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 8, parameter value [751.1283787024478], value class [java.lang.Double], SQL type 8
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 9, parameter value [null], value class [null], SQL type 12
TRACE StatementCreatorUtils - Setting SQL statement parameter value: column index 10, parameter value [null], value class [null], SQL type 8
INFO XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]
INFO SQLErrorCodesFactory - SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]
ERROR LoggingHandler - org.springframework.integration.MessageHandlingException: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [Insert into TRNX_TXN_MAP_VALUES (BASE_TRANSACTION_ID,MAP_TYPE,ENUM_TYPE,DECIMALVALUE,STRINGVALUE,LONGVALUE,BOOLEANVALUE,DOUBLEVALUE,CURRENCYCODE,AMOUNT) values (?,?,?,?,?,?,?,?,?,?)]; SQL state [null]; error code [0]; Overflow Exception trying to bind NaN; nested exception is java.sql.BatchUpdateException: Overflow Exception trying to bind NaN
答案 0 :(得分:2)
问题是数据问题,Double对象实际上允许执行类似sqrt(-ve number)的操作。它存储时将它存储为NaN和oracle的声音。
答案 1 :(得分:0)
同样的问题。我发现数据没有错。 我找到了答案:sql-hibernate-erreur-overflow-exception-trying-to-bind-nan-lis-objet
但答案是用法语写的。可能这意味着这个问题可能是由hibernate缓存引起的。所以我做下面的事情
1. Clean The Tomcat Server
2. Clean the project
最后,它对我有用!!