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

          Jeremy Bauer created issue -
          Milosz Tylenda made changes -
          Field Original Value New Value
          Link This issue is related to OPENJPA-525 [ OPENJPA-525 ]
          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.
          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
          Milosz Tylenda made changes -
          Link This issue relates to OPENJPA-1461 [ OPENJPA-1461 ]
          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
          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.
          Jeremy Bauer made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Fix Version/s 2.0.0 [ 12314019 ]
          Resolution Fixed [ 1 ]
          Donald Woods made changes -
          Fix Version/s 2.0.0-beta [ 12314149 ]
          Fix Version/s 2.0.0 [ 12314019 ]
          Affects Version/s 2.0.0-M3 [ 12314148 ]
          Affects Version/s 2.0.0 [ 12314019 ]
          Donald Woods made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          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.
          Milosz Tylenda made changes -
          Fix Version/s 1.3.0 [ 12313326 ]
          Michael Dick made changes -
          Link This issue is related to OPENJPA-1874 [ OPENJPA-1874 ]
          Michael Dick made changes -
          Fix Version/s 1.2.3 [ 12314517 ]
          Affects Version/s 1.2.2 [ 12313681 ]
          Transition Time In Source Status Execution Times Last Executer Last Execution Date
          Open Open Resolved Resolved
          139d 20h 12m 1 Jeremy Bauer 27/Jan/10 16:02
          Resolved Resolved Closed Closed
          41d 2h 29m 1 Donald Woods 09/Mar/10 18:31

            People

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

              Dates

              • Created:
                Updated:
                Resolved:

                Development