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