[
https://issues.apache.org/jira/browse/OPENJPA-525?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12727719#action_12727719
]
Albert Lee commented on OPENJPA-525:
------------------------------------
After the latest patch, I am seeing the following exception:
Caused by: java.lang.ClassCastException:
org.apache.openjpa.jdbc.schema.DynamicSchemaFactory$DynamicColumn incompatible
with java.lang.Number
at
org.apache.openjpa.jdbc.sql.ResultSetResult.getCharacterStreamInternal(ResultSetResult.java:305)
at
org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:423)
at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:694)
at
org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:220)
at
org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:186)
at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:912)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1015)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:967)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:391)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:290)
at
com.ibm.ws.persistence.jdbc.kernel.WsJpaJDBCStoreManager.initialize(WsJpaJDBCStoreManager.java:147)
at
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1003)
at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:961)
Look further in the changes and found in:
ResultSetResult.java
protected Object translate(Object obj, Joins joins)
throws SQLException {
if (obj instanceof Number)
return obj;
// getStringInternal will take care the translation
if (obj instanceof Column && ((Column) obj).getType() == Types.CLOB)
return obj;
return Numbers.valueOf(findObject(obj, joins));
}
The newly added code will always return object which is a Column type. However
this method is expect a Number object to be returned.
// getStringInternal will take care the translation
if (obj instanceof Column && ((Column) obj).getType() == Types.CLOB)
return obj;
Albert Lee.
> Inserts new entity with NULL value for Clob column actually inserts empty
> string
> --------------------------------------------------------------------------------
>
> Key: OPENJPA-525
> URL: https://issues.apache.org/jira/browse/OPENJPA-525
> Project: OpenJPA
> Issue Type: Bug
> Affects Versions: 1.0.0, 1.0.2, 1.1.0, 2.0.0
> Environment: OpenJPA 1.0.0, 1.0.2
> Oracle XE 10g (JDBC driver 10.2.0.3.0
> JRE 1.5.0_13
> Reporter: Frank Le
> Fix For: 1.1.1, 2.0.0
>
> Attachments: OPENJPA525.patch, OPENJPA525_1_1_x.patch
>
>
> Inserts new entity with NULL value for Clob column with "nullable = true"
> actually inserts empty string as the value!
> Here's the persistence class:
> public class Exam... {
> @Lob
> private String text;
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.