简体   繁体   English

如何获取无效数据转换的OpenJPA异常的确切详细信息?

[英]How to get the exact details of OpenJPA exception for invalid data conversion?

I am getting below java exception for a SELECT statement via OpenJPA which connect to DB2 database. 我通过连接到DB2数据库的OpenJPA的SELECT语句遇到了Java异常。

Can someone guide me on how to exactly find which column is a mismatch? 有人可以指导我如何准确找到不匹配的列吗?

The error code ERRORCODE=-4461 does not really elaborate much. 错误代码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]

I have looked at this and this . 我已经看过这个这个

I could also see that enabling <property name="openjpa.jdbc.DBDictionary" value="db2(SupportsSelectStartIndex=true,SupportsSelectEndIndex=true)"/> in persistence.xml creates the issue. 我还可以看到,在persistence.xml中启用<property name="openjpa.jdbc.DBDictionary" value="db2(SupportsSelectStartIndex=true,SupportsSelectEndIndex=true)"/>会造成此问题。 Commenting that solves it. 评论解决了。 This is enabled for selecting top 10 rows from result set. 可以从结果集中选择前10行。 The syntax SELECT TOP 10 FROM SOME_TABLE does not work with DB2 directly. 语法SELECT TOP 10 FROM SOME_TABLE不能直接与DB2一起使用。 But not really sure on why exactly this causes issue. 但不确定为什么会导致问题。

Can someone guide me on how to exactly find which column is a mismatch? 有人可以指导我如何准确找到不匹配的列吗?

Can you open class JDBCStoreManager in IDEA and set breakpoint in first of line of method initialize() when call your SELECT statement? 可以在调用SELECT语句时在IDEA打开类JDBCStoreManager并在initialize()方法的第一行中设置断点吗? I think, you can find out what problem quite easy in debug mode. 我认为,您可以在调试模式下轻松找出问题所在。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 OPenJPA::引发异常时如何提交实体 - OPenJPA: : How to commit entities when an exception is thrown 授权后如何获得确切的用户详细信息 - How can I get exact user details after authorisation Apache OpenJPA-NamedQuery异常 - Apache OpenJPA - NamedQuery Exception 如何在批处理中获取包含异常的精确sql查询 - How to get exact sql query that contains exception in batch processing 如何从方法中获取异常详细信息和方法返回值 - How to get exception details and method returned value from method 针对openjpa上的原始类型,异常调用带有后缀“ IN”的spring数据jpa查询方法 - Exception calling spring data jpa query method with suffix “IN” against primitive type on openjpa 在使用 OpenJPA 时调用 createEntityManager 时,您能否获得更具体的异常或导致 PersistenceException 的原因 - Can you get more specific exception or cause of getting PersistenceException when calling createEntityManager while using OpenJPA 如何获得确切的字节数? - How to get the exact bytes? 如何在Java中解决“数据异常:强制转换的无效字符值”? - How to resolve “data exception: invalid character value for cast” in java? 使用openJPA MySQL进行运行时优化的例外情况 - Exception regarding runtime optimization using openJPA MySQL
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM