OpenJPA
  1. OpenJPA
  2. OPENJPA-1289

Oracle driver throws exception due to incorrect mapping of XMLType column

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.2.2, 2.0.0-M3
    • Fix Version/s: 1.2.3, 1.3.0, 2.0.0-beta
    • Component/s: None
    • Labels:
      None
    • Environment:
      Oracle 10i and 11 server. 10.x and 11.2.0.1.0 thin JDBC driver

      Description

      Many variations of org.apache.openjpa.persistence.xmlmapping.query.TestXMLCustomerOrder are failing on Oracle with this exception:

      <openjpa-2.0.0-SNAPSHOT-rexported nonfatal general error> org.apache.openjpa.persistence.PersistenceException: Invalid column type: getCLOB not implemented for class oracle.jdbc.driver.T4CVarcharAccessor
      <snip/>
      Caused by: java.sql.SQLException: Invalid column type: getCLOB not implemented for class oracle.jdbc.driver.T4CVarcharAccessor
      at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
      at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
      at oracle.jdbc.driver.Accessor.unimpl(Accessor.java:358)
      at oracle.jdbc.driver.Accessor.getCLOB(Accessor.java:1328)
      at oracle.jdbc.driver.OracleResultSetImpl.getCLOB(OracleResultSetImpl.java:1305)
      at oracle.jdbc.driver.OracleResultSetImpl.getClob(OracleResultSetImpl.java:1471)
      at org.apache.commons.dbcp.DelegatingResultSet.getClob(DelegatingResultSet.java:515)
      at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getClob(DelegatingResultSet.java:612)
      at org.apache.openjpa.jdbc.sql.DBDictionary.getClob(DBDictionary.java:690)
      at org.apache.openjpa.jdbc.sql.OracleDictionary.getClobString(OracleDictionary.java:562)
      at org.apache.openjpa.jdbc.sql.ResultSetResult.getStringInternal(ResultSetResult.java:471)
      at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:399)
      at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:696)
      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:913)
      at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1021)
      at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:973)
      at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:393)
      at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:292)
      <snip/>
      The Oracle driver does not allow the clob operations to operate on fields of XMLType. OpenJPA maps fields of type XMLType to CLOB and uses CLOB getter/setters, resulting in the exception above. The mapping should be changed such that the CLOB operations are not used for XML data.

        Issue Links

          Activity

          Hide
          Milosz Tylenda added a comment -

          Applied a similar fix to the 1.3.x branch.

          Show
          Milosz Tylenda added a comment - Applied a similar fix to the 1.3.x branch.
          Hide
          Jeremy Bauer added a comment -

          This problem has been fixed by Catalina under OPENJPA-1461. Thanks, Milosz for keeping an eye on these issues.

          Show
          Jeremy Bauer added a comment - This problem has been fixed by Catalina under OPENJPA-1461 . Thanks, Milosz for keeping an eye on these issues.
          Hide
          Milosz Tylenda added a comment -

          It seems that the CREATE TABLE problem has been resolved by Catalina in OPENJPA-1461.

          Show
          Milosz Tylenda added a comment - It seems that the CREATE TABLE problem has been resolved by Catalina in OPENJPA-1461 .
          Hide
          Milosz Tylenda added a comment -

          Hi Jeremy. Are you still seeing the failure?

          I noticed that for some reason the test case fails at table creation phase because it started adding column length to XMLTYPE:

          PersistenceException: ORA-00907: missing right parenthesis

          {stmnt 16108506 CREATE TABLE TORDER (oid NUMBER NOT NULL, amount NUMBER, delivered NUMBER, shipAddress XMLType(255), version NUMBER, CUSTOMER_COUNTRYCODE VARCHAR2(255), CUSTOMER_ID NUMBER, PRIMARY KEY (oid))}

          [code=907, state=42000]

          It helped to add "XMLTYPE" to fixedSizeTypeNameSet. After that the test passes (I executed it from Eclipse).

          My environment is Java 5, Oracle 10g Express Edition Release 10.2.0.1.0, Oracle JDBC driver 10.2.0.3.0

          Show
          Milosz Tylenda added a comment - Hi Jeremy. Are you still seeing the failure? I noticed that for some reason the test case fails at table creation phase because it started adding column length to XMLTYPE: PersistenceException: ORA-00907: missing right parenthesis {stmnt 16108506 CREATE TABLE TORDER (oid NUMBER NOT NULL, amount NUMBER, delivered NUMBER, shipAddress XMLType(255), version NUMBER, CUSTOMER_COUNTRYCODE VARCHAR2(255), CUSTOMER_ID NUMBER, PRIMARY KEY (oid))} [code=907, state=42000] It helped to add "XMLTYPE" to fixedSizeTypeNameSet. After that the test passes (I executed it from Eclipse). My environment is Java 5, Oracle 10g Express Edition Release 10.2.0.1.0, Oracle JDBC driver 10.2.0.3.0
          Hide
          Milosz Tylenda added a comment -

          Hello Jeremy. Maybe this problem is revealed by the OPENJPA-525 fix. Before that fix we were unintentionally called get getString on CLOBs, now we are calling getClobString.

          Show
          Milosz Tylenda added a comment - Hello Jeremy. Maybe this problem is revealed by the OPENJPA-525 fix. Before that fix we were unintentionally called get getString on CLOBs, now we are calling getClobString.

            People

            • Assignee:
              Jeremy Bauer
              Reporter:
              Jeremy Bauer
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development