尝试绑定NaN时溢出

时间:2014-09-27 02:35:46

标签: java sql oracle spring-jdbc jdbctemplate

我的表架构是:

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

2 个答案:

答案 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

最后,它对我有用!!