2010-11-24 24 views
4

我的代碼拋出以下行上述異常(此2號線):如何防止此異常?值java.sql.SQLException:無法轉換到內部表示:

final ArrayDescriptor tParamArrayDescriptor = ArrayDescriptor.createDescriptor("MY_SYSTEM.T_PARAM_ARRAY", databaseHandler.getConnection()); 
final ARRAY oracleArray = new ARRAY(tParamArrayDescriptor, databaseHandler.getConnection(), myObjects.toArray()); 

它讓我有以下異常:

java.sql.SQLException: Fail to convert to internal representation: 

myObjects是以下POJO的ArrayList:

public class MyObject 
{ 
    private String name; 
    private String surname; 

    private int age; 

    ... 

    // Accessors etc.. 

} 

T_PARAM_ARRAY對數據庫如下所示:

create or replace 
TYPE    T_PARAM_ARRAY AS OBJECT (NAME VARCHAR2(50), SURNAME VARCHAR2(50), AGE NUMBER(1)); 

經過一番研究,我相信我的POJO和數據庫類型之間的數據類型映射不正確匹配。我有理由相信String匹配到VARCHAR2好,但我認爲有一個問題將int轉換爲NUMBER

我試過使用BigDecimal,但那並沒有改善這種情況。

有什麼建議嗎?

編輯:根據Oracle documentationWhere intArray is an oracle.sql.ARRAY, corresponding to a VARRAY of type NUMBER. The values array contains an array of elements of type java.math.BigDecimal, because the SQL NUMBER datatype maps to Java BigDecimal by default, according to the Oracle JDBC drivers.

回答

相關問題