[ 
https://issues.apache.org/jira/browse/OPENJPA-743?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeremy Bauer resolved OPENJPA-743.
----------------------------------

    Resolution: Fixed

When setting up a parameters of a prepared statement, OpenJPA sets null clob 
field values to an empty clob parameter type, while it sets non-null values to 
a character stream.  When statement batching is enabled, the Oracle 1.4 driver 
fails to insert all the batched rows due to using mixed parameter types, even 
though the parameter types/values are compatible with the table column and can 
be inserted using separate statements.  

This problem no longer exists in version 11.0.7.0 of the Oracle JDK 5 JDBC 
driver, ojdbc5.jar.  It was not, however resolved in the latest 1.4 driver, 
version 10.2.0.4.  Preferably, get the latest  ojdbc5 driver to correct the 
problem.  If use of ojdbc14.jar is necessary, the recommended workaround is to 
disable statement batching.

> OptimisticLockException persisting collection containing Lob fields with 
> Oracle
> -------------------------------------------------------------------------------
>
>                 Key: OPENJPA-743
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-743
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc
>    Affects Versions: 1.2.0
>         Environment: OpenJPA 1.2.0, Oracle 10g ojdbc14.jar, version 10.2.0.1.0
>            Reporter: Jeremy Bauer
>            Assignee: Jeremy Bauer
>
> Persisting an object graph with an entity containing a persistent collection 
> of objects which contain a Lob field may fail on Oracle if statement batching 
> is enabled.  The failure will depend on the order of operations, which can be 
> somewhat intermittent.  If more than one insert into the table containing the 
> Lob column are batched together and there is a mix of null and non-null data 
> value parameters, the batch insert operation will fail with an 
> OptimisticLockException.  
> A simple (but not especially performance friendly) way to work around the 
> problem is to disable statement batching via: 
> <property name="openjpa.jdbc.DBDictionary" value="oracle(batchLimit=0)"/>  
> Otherwise, if possible, make sure all Lob fields are set to a non-null value.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to