2014-09-27 33 views
0

我的表架构是:溢出而试图绑定的NaN

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

它做一些操作,直到南朝满足条件,但由于它不处理正确的NaN它永远不会满足的条件。只是一个猜测。 – 2014-09-27 02:56:41

回答

2

这个问题是一个数据问题,Double对象实际上允许做类似sqrt(-ve number)的事情。它将它存储为NaN,并在存储它时发出oracle的喊声。