Problem with CLOB field under Oracle
------------------------------------

                 Key: CAY-1231
                 URL: https://issues.apache.org/jira/browse/CAY-1231
             Project: Cayenne
          Issue Type: Bug
          Components: Cayenne Core Library
    Affects Versions: 2.0 branch
         Environment: Oracle 10g, Cayenne 2.0.4, Java 1.5 
            Reporter: Eugene Matyushkin
            Priority: Critical


1. Creating table:

CREATE TABLE CRM_PDOCTYPECAT (
      PDOCTYPECATID     NUMERIC(19,0) NOT NULL,
      CATNAME           VARCHAR(255) NOT NULL,       
      CATDESCRIPTION    CLOB NULL                       
);


2. Creating named query
INSERT INTO CRM_PDOCTYPECAT(
        PDOCTYPECATID,
        CATNAME,
        CATDESCRIPTION
) VALUES (
        #bind($PDOCTYPECATID 'NUMERIC'),
        #bind($CATNAME 'VARCHAR'),
        #bind($CATDESCRIPTION 'CLOB')
)

3. Binding very long (more then 32766 chars) string to CATDESCRIPTION.

4. Executing query 

Result: 

2009-05-28 13:32:03,053 [main] INFO  org.apache.cayenne.access.QueryLogger - 
*** error.
java.sql.SQLException: setString can process only strings less then 32766 
symbols in length
        at 
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
        at 
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
        at 
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
        at 
oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:4588)
        at 
oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:4559)

I guess, setClob should be used instead of setString when working with CLOBs.

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