2015-12-14 33 views
0

我通過連接到DB2數據庫的OpenJPA得到了一個SELECT語句的java異常。如何獲取無效數據轉換的OpenJPA異常的確切詳細信息?

有人可以指導我如何正確地找到哪一列是不匹配?

錯誤代碼ERRORCODE=-4461並沒有真正詳細說明。

org.apache.openjpa.persistence.PersistenceException: [jcc][t4][1092][11644][3.57.82] Invalid data conversion: Wrong result column type for requested conversion. ERRORCODE=-4461, SQLSTATE=42815 
    at org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4827) ~[com.ibm.ws.jpa.jar:1.0.1-SNAPSHOT] 
    at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4787) ~[com.ibm.ws.jpa.jar:1.0.1-SNAPSHOT] 
    at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:563) ~[com.ibm.ws.jpa.jar:1.0.1-SNAPSHOT] 
    at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:136) ~[com.ibm.ws.jpa.jar:1.0.1-SNAPSHOT] 
    at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:86) ~[com.ibm.ws.jpa.jar:1.0.1-SNAPSHOT] 
    at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:347) ~[com.ibm.ws.jpa.jar:1.0.1-SNAPSHOT] 
    at com.ibm.ws.persistence.jdbc.kernel.WsJpaJDBCStoreManager.initialize(WsJpaJDBCStoreManager.java:147) ~[com.ibm.ws.jpa.jar:1.0.1-SNAPSHOT] 
    at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112) ~[com.ibm.ws.jpa.jar:1.0.1-SNAPSHOT] 
    at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57) ~[com.ibm.ws.jpa.jar:1.0.1-SNAPSHOT] 
    at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1005) ~[com.ibm.ws.jpa.jar:1.0.1-SNAPSHOT] 
    at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:963) ~[com.ibm.ws.jpa.jar:1.0.1-SNAPSHOT] 
    at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:880) ~[com.ibm.ws.jpa.jar:1.0.1-SNAPSHOT] 
    at org.apache.openjpa.kernel.DelegatingBroker.find(DelegatingBroker.java:223) ~[com.ibm.ws.jpa.jar:1.0.1-SNAPSHOT] 
    at org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:476) ~[com.ibm.ws.jpa.jar:1.0.1-SNAPSHOT] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48) ~[na:1.6.0] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0] 
    at java.lang.reflect.Method.invoke(Method.java:600) ~[na:1.6.0] 
    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365) ~[org.springframework.orm-3.1.2.RELEASE.jar:3.1.2.RELEASE] 
    at $Proxy45.find(Unknown Source) ~[na:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48) ~[na:1.6.0] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0] 
    at java.lang.reflect.Method.invoke(Method.java:600) ~[na:1.6.0] 
    at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240) ~[org.springframework.orm-3.1.2.RELEASE.jar:3.1.2.RELEASE] 
    at $Proxy45.find(Unknown Source) ~[na:na] 

我已經看過thisthis

我也可以看到在persistence.xml中啓用<property name="openjpa.jdbc.DBDictionary" value="db2(SupportsSelectStartIndex=true,SupportsSelectEndIndex=true)"/>會產生問題。評論解決了這個問題。這用於從結果集中選擇前10行。語法SELECT TOP 10 FROM SOME_TABLE不直接與DB2一起使用。 但是,爲什麼這確實會導致問題並不確定。

+0

您是否認爲包括生成的SELECT語句以及表定義可能會有用? – mustaccio

回答

1

有人可以指導我如何正確地找到哪一列是 不匹配?

你能公開課JDBCStoreManagerIDEA並設置斷點在第一種方法初始化的行()的時候打電話給你SELECT聲明?我認爲,在調試模式下你可以很容易地發現問題。

+0

我檢查並確認由於persistence.xml中的屬性而發生異常 Sam