[ 
https://issues.apache.org/jira/browse/OPENJPA-1691?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12878366#action_12878366
 ] 

Milosz Tylenda commented on OPENJPA-1691:
-----------------------------------------

Some work notes:

Neither PreparedStatement.setCharacterStream(int, Reader, int) nor 
OraclePreparedStatement.setStringForClob(int, String) helps here.
So far I have found two methods that seem to work with data over 4000 chars:

a)
1. Prepare a statement using XMLType constructor "insert into TORDERXML 
values(?, ?, ?, XMLType(?), ?, ?, ?)" 
2. Set the value by using PreparedStatement.setClob(int, Reader). This requires 
JDBC 4 (JDK 6). Tried with 11.2.0.1 driver.

b)
1. Prepare a statement using XMLType constructor "insert into TORDERXML 
values(?, ?, ?, XMLType(?), ?, ?, ?)" 
2. Create a temporary CLOB, fill it with XML data (similarly to [1]) and use 
PreparedStatement.setClob(int, Clob) or PreparedStatement.setObject(int, 
Object). This requires using Oracle-specific API and the temporary CLOB should 
be freed after statement execution. This works with 10.2.0.4 driver but 
11.2.0.1 throws a bunch of ORAs:
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00229: input source is empty
Error at line 0
ORA-06512: at "SYS.XMLTYPE", line 254
ORA-06512: at line 1

Neither method is a workaround for users to be applied solely in DBDictionary 
but requires a patch.

Kelvin, which JDK are you using?

[1] 
http://www.oracle.com/technology/sample_code/tech/java/codesnippet/xmldb/Example_Code.html#createclob


> Oracle XMLType column failed to insert/update when xml contains more than 
> 4000 characters
> -----------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-1691
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1691
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 1.2.2
>         Environment: Oracle 10g, JDBC driver (ojdbc14.jar) 10.2.0.4.0, 
> OpenJPA 1.2.2
>            Reporter: Kelvin Law
>            Assignee: Milosz Tylenda
>
> Oracle throws the following exception when XML content is greater than 4000 
> characters:
> ORA-01461: can bind a LONG value only for insert into a LONG column

-- 
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