You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Henry Lu <zh...@umich.edu> on 2005/06/09 17:36:10 UTC

32k limitations for clob/blob?

I got the following errors when I insert a large text into a CLOB in 
oracle by using iBatis. How do I resulve it? I am using Oracle 10G jdbc 
deiver.


org.springframework.jdbc.UncategorizedSQLException: 
(SqlMapClientTemplate): encountered SQLException [ 
--- The error occurred in 
edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml. 
--- The error occurred while applying a parameter map. 
--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map. 
--- Check the parameter mapping for the 'INFO_TEXT' property. 
--- Cause: java.sql.SQLException: setString can only process strings of 
less than 32766 chararacters]; nested exception is 
com.ibatis.common.jdbc.exception.NestedSQLException:  
--- The error occurred in 
edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml. 
--- The error occurred while applying a parameter map. 
--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map. 
--- Check the parameter mapping for the 'INFO_TEXT' property. 
--- Cause: java.sql.SQLException: setString can only process strings of 
less than 32766 chararacters
org.springframework.jdbc.UncategorizedSQLException: 
(SqlMapClientTemplate): encountered SQLException [ 
--- The error occurred in 
edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml. 
--- The error occurred while applying a parameter map. 
--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map. 
--- Check the parameter mapping for the 'INFO_TEXT' property. 
--- Cause: java.sql.SQLException: setString can only process strings of 
less than 32766 chararacters]; nested exception is 
com.ibatis.common.jdbc.exception.NestedSQLException:  
--- The error occurred in 
edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml. 
--- The error occurred while applying a parameter map. 
--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map. 
--- Check the parameter mapping for the 'INFO_TEXT' property. 
--- Cause: java.sql.SQLException: setString can only process strings of 
less than 32766 chararacters
com.ibatis.common.jdbc.exception.NestedSQLException:  
--- The error occurred in 
edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml. 
--- The error occurred while applying a parameter map. 
--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map. 
--- Check the parameter mapping for the 'INFO_TEXT' property. 
--- Cause: java.sql.SQLException: setString can only process strings of 
less than 32766 chararacters
Caused by: java.sql.SQLException: setString can only process strings of 
less than 32766 chararacters
    at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:87)
    at 
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
    at 
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
    at 
org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
    at 
org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
    at 
org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
    at 
edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
    at 
unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
    at 
unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at junit.framework.TestCase.runTest(TestCase.java:154)
    at junit.framework.TestCase.runBare(TestCase.java:127)
    at junit.framework.TestResult$1.protect(TestResult.java:106)
    at junit.framework.TestResult.runProtected(TestResult.java:124)
    at junit.framework.TestResult.run(TestResult.java:109)
    at junit.framework.TestCase.run(TestCase.java:118)
    at junit.framework.TestSuite.runTest(TestSuite.java:208)
    at junit.framework.TestSuite.run(TestSuite.java:203)
    at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
    at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
    at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
Caused by: java.sql.SQLException: setString can only process strings of 
less than 32766 chararacters
    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)
    at 
com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
    at 
com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
    at 
com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
    at 
com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
    at 
com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
    at 
com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
    at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
    at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
    ... 23 more

Caused by:
java.sql.SQLException: setString can only process strings of less than 
32766 chararacters
    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)
    at 
com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
    at 
com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
    at 
com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
    at 
com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
    at 
com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
    at 
com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
    at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
    at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
    at 
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
    at 
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
    at 
org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
    at 
org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
    at 
org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
    at 
edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
    at 
unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
    at 
unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at junit.framework.TestCase.runTest(TestCase.java:154)
    at junit.framework.TestCase.runBare(TestCase.java:127)
    at junit.framework.TestResult$1.protect(TestResult.java:106)
    at junit.framework.TestResult.runProtected(TestResult.java:124)
    at junit.framework.TestResult.run(TestResult.java:109)
    at junit.framework.TestCase.run(TestCase.java:118)
    at junit.framework.TestSuite.runTest(TestSuite.java:208)
    at junit.framework.TestSuite.run(TestSuite.java:203)
    at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
    at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
    at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)

-Henry

Re: 32k limitations for clob/blob?

Posted by Henry Lu <zh...@umich.edu>.
Is there anyone who have a working-code for insert CLOB and LONG data 
type in Oracle?

-Henry

P.S.

Check the statement (update failed). - is a missleading error message from iBatis. I did use INSERT command.

-Henry


Sven Boden wrote:

>In your trace it states:
>Check the statement (update failed).
>
>I would have to check the iBatis code what's actually happening (and
>probably would need a few more pieces of information from your setup)
>but LOBs/CLOBs can't be updated, only deleted/inserted.
>
>>From the Oracle documentation:
>http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a85397/function.htm#79466
>
>Regards,
>Sven Boden
>
>On Thu, 09 Jun 2005 13:33:45 -0400, you wrote:
>
>  
>
>>Thanks for your info. I change my sql to be:
>>
>> <insert id="insert_clob">
>>  insert into x_clob
>>         (name,c)
>>   values
>>         (#name:VARCHAR#,to_lob(#c:VARCHAR#))
>> </insert>
>>
>>and got the following errors:
>>
>>    [java] size=1819572, 1819572
>>    [java] org.springframework.jdbc.BadSqlGrammarException: Bad SQL 
>>grammar [(m
>>apped statement)] in task 'SqlMapClientTemplate'; nested exception is 
>>com.ibatis
>>.common.jdbc.exception.NestedSQLException:
>>    [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>    [java] --- The error occurred while applying a parameter map.
>>    [java] --- Check the insert_clob-InlineParameterMap.
>>    [java] --- Check the statement (update failed).
>>    [java] --- Cause: java.sql.SQLException: ORA-00932: inconsistent 
>>datatypes:
>>expected - got BINARY
>>
>>-Henry
>>
>>Sven Boden wrote:
>>
>>    
>>
>>>Item 1 is String limitation.
>>>
>>>Item 2 I've never hit when using iBatis. I did get it however a few
>>>times in PL-SQL... the problem was then solved by using the Oracle
>>>function to_lob() while inserting the lob.
>>>
>>>Regards,
>>>Sven Boden
>>>
>>>On Thu, 09 Jun 2005 13:05:50 -0400, you wrote:
>>>
>>> 
>>>
>>>      
>>>
>>>>No, I didn't. However, I got more details on the errors.
>>>>1. If I insert into CLOB or LONG as jdbc type with String in java, I got 
>>>>the 32K limitation error.
>>>>
>>>>   [java] size=1551138, 1551138
>>>>   [java] org.springframework.jdbc.UncategorizedSQLException: 
>>>>(SqlMapClientTem
>>>>plate): encountered SQLException [
>>>>   [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>>   [java] --- The error occurred while applying a parameter map.
>>>>   [java] --- Check the insert_long-InlineParameterMap.
>>>>   [java] --- Check the parameter mapping for the 'l' property.
>>>>   [java] --- Cause: java.sql.SQLException: setString can only process 
>>>>strings
>>>>of less than 32766 chararacters]; nested exception is 
>>>>com.ibatis.common.jdbc.ex
>>>>ception.NestedSQLException:
>>>>   [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>>   [java] --- The error occurred while applying a parameter map.
>>>>   [java] --- Check the insert_long-InlineParameterMap.
>>>>   [java] --- Check the parameter mapping for the 'l' property.
>>>>   [java] --- Cause: java.sql.SQLException: setString can only process 
>>>>strings
>>>>of less than 32766 chararacters
>>>>
>>>>2. If I insert into CLOB or LONG as jdbc type with byte[] in java, I got 
>>>>the following errors:
>>>>
>>>>   [java] size=1461140, 1461140
>>>>   [java] org.springframework.jdbc.UncategorizedSQLException: 
>>>>(SqlMapClientTem
>>>>plate): encountered SQLException [
>>>>   [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>>   [java] --- The error occurred while applying a parameter map.
>>>>   [java] --- Check the insert_long-InlineParameterMap.
>>>>   [java] --- Check the statement (update failed).
>>>>   [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a LONG 
>>>>value o
>>>>nly for insert into a LONG column
>>>>   [java] ]; nested exception is 
>>>>com.ibatis.common.jdbc.exception.NestedSQLExc
>>>>eption:
>>>>   [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>>   [java] --- The error occurred while applying a parameter map.
>>>>   [java] --- Check the insert_long-InlineParameterMap.
>>>>   [java] --- Check the statement (update failed).
>>>>   [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a LONG 
>>>>value o
>>>>nly for insert into a LONG column
>>>>
>>>>Any idea?
>>>>
>>>>-Henry
>>>>
>>>>
>>>>Brandon Goodin wrote:
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>>>>I'm not aware of this limitation. We have run into similar things
>>>>>before with the oracle driver. But, upgrading has always fixed it.
>>>>>Have you attempted a test using straight JDBC?
>>>>>
>>>>>Brandon
>>>>>
>>>>>On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
>>>>>
>>>>>
>>>>>     
>>>>>
>>>>>          
>>>>>
>>>>>>I got the following errors when I insert a large text into a CLOB in
>>>>>>oracle by using iBatis. How do I resulve it? I am using Oracle 10G jdbc
>>>>>>deiver.
>>>>>>
>>>>>>
>>>>>>org.springframework.jdbc.UncategorizedSQLException:
>>>>>>(SqlMapClientTemplate): encountered SQLException [
>>>>>>--- The error occurred in
>>>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>>>--- The error occurred while applying a parameter map.
>>>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>>>less than 32766 chararacters]; nested exception is
>>>>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>>>--- The error occurred in
>>>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>>>--- The error occurred while applying a parameter map.
>>>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>>>less than 32766 chararacters
>>>>>>org.springframework.jdbc.UncategorizedSQLException:
>>>>>>(SqlMapClientTemplate): encountered SQLException [
>>>>>>--- The error occurred in
>>>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>>>--- The error occurred while applying a parameter map.
>>>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>>>less than 32766 chararacters]; nested exception is
>>>>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>>>--- The error occurred in
>>>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>>>--- The error occurred while applying a parameter map.
>>>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>>>less than 32766 chararacters
>>>>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>>>--- The error occurred in
>>>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>>>--- The error occurred while applying a parameter map.
>>>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>>>less than 32766 chararacters
>>>>>>Caused by: java.sql.SQLException: setString can only process strings of
>>>>>>less than 32766 chararacters
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:87)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
>>>>>>  at
>>>>>>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>>>>  at
>>>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
>>>>>>  at
>>>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
>>>>>>  at
>>>>>>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>>>>  at
>>>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>>>>  at
>>>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>>>>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>>>  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>>>>>  at java.lang.reflect.Method.invoke(Unknown Source)
>>>>>>  at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>>>  at junit.framework.TestCase.runBare(TestCase.java:127)
>>>>>>  at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>>>  at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>>>  at junit.framework.TestResult.run(TestResult.java:109)
>>>>>>  at junit.framework.TestCase.run(TestCase.java:118)
>>>>>>  at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>>>  at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>>>  at
>>>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>>>>>>  at
>>>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>>>>>>  at
>>>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
>>>>>>Caused by: java.sql.SQLException: setString can only process strings of
>>>>>>less than 32766 chararacters
>>>>>>  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)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
>>>>>>  ... 23 more
>>>>>>
>>>>>>Caused by:
>>>>>>java.sql.SQLException: setString can only process strings of less than
>>>>>>32766 chararacters
>>>>>>  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)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
>>>>>>  at
>>>>>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
>>>>>>  at
>>>>>>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>>>>  at
>>>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
>>>>>>  at
>>>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
>>>>>>  at
>>>>>>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>>>>  at
>>>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>>>>  at
>>>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>>>>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>>>  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>>>>>  at java.lang.reflect.Method.invoke(Unknown Source)
>>>>>>  at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>>>  at junit.framework.TestCase.runBare(TestCase.java:127)
>>>>>>  at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>>>  at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>>>  at junit.framework.TestResult.run(TestResult.java:109)
>>>>>>  at junit.framework.TestCase.run(TestCase.java:118)
>>>>>>  at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>>>  at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>>>  at
>>>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>>>>>>  at
>>>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>>>>>>  at
>>>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
>>>>>>
>>>>>>-Henry
>>>>>>
>>>>>>  
>>>>>>
>>>>>>       
>>>>>>
>>>>>>            
>>>>>>
>>>>>     
>>>>>
>>>>>          
>>>>>
>>>
>>> 
>>>
>>>      
>>>
>
>
>
>  
>

Re: 32k limitations for clob/blob?

Posted by Sven Boden <li...@pandora.be>.
In your trace it states:
Check the statement (update failed).

I would have to check the iBatis code what's actually happening (and
probably would need a few more pieces of information from your setup)
but LOBs/CLOBs can't be updated, only deleted/inserted.

From the Oracle documentation:
http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a85397/function.htm#79466

Regards,
Sven Boden

On Thu, 09 Jun 2005 13:33:45 -0400, you wrote:

>Thanks for your info. I change my sql to be:
>
>  <insert id="insert_clob">
>   insert into x_clob
>          (name,c)
>    values
>          (#name:VARCHAR#,to_lob(#c:VARCHAR#))
>  </insert>
>
>and got the following errors:
>
>     [java] size=1819572, 1819572
>     [java] org.springframework.jdbc.BadSqlGrammarException: Bad SQL 
>grammar [(m
>apped statement)] in task 'SqlMapClientTemplate'; nested exception is 
>com.ibatis
>.common.jdbc.exception.NestedSQLException:
>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>     [java] --- The error occurred while applying a parameter map.
>     [java] --- Check the insert_clob-InlineParameterMap.
>     [java] --- Check the statement (update failed).
>     [java] --- Cause: java.sql.SQLException: ORA-00932: inconsistent 
>datatypes:
> expected - got BINARY
>
>-Henry
>
>Sven Boden wrote:
>
>>Item 1 is String limitation.
>>
>>Item 2 I've never hit when using iBatis. I did get it however a few
>>times in PL-SQL... the problem was then solved by using the Oracle
>>function to_lob() while inserting the lob.
>>
>>Regards,
>>Sven Boden
>>
>>On Thu, 09 Jun 2005 13:05:50 -0400, you wrote:
>>
>>  
>>
>>>No, I didn't. However, I got more details on the errors.
>>>1. If I insert into CLOB or LONG as jdbc type with String in java, I got 
>>>the 32K limitation error.
>>>
>>>    [java] size=1551138, 1551138
>>>    [java] org.springframework.jdbc.UncategorizedSQLException: 
>>>(SqlMapClientTem
>>>plate): encountered SQLException [
>>>    [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>    [java] --- The error occurred while applying a parameter map.
>>>    [java] --- Check the insert_long-InlineParameterMap.
>>>    [java] --- Check the parameter mapping for the 'l' property.
>>>    [java] --- Cause: java.sql.SQLException: setString can only process 
>>>strings
>>>of less than 32766 chararacters]; nested exception is 
>>>com.ibatis.common.jdbc.ex
>>>ception.NestedSQLException:
>>>    [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>    [java] --- The error occurred while applying a parameter map.
>>>    [java] --- Check the insert_long-InlineParameterMap.
>>>    [java] --- Check the parameter mapping for the 'l' property.
>>>    [java] --- Cause: java.sql.SQLException: setString can only process 
>>>strings
>>>of less than 32766 chararacters
>>>
>>>2. If I insert into CLOB or LONG as jdbc type with byte[] in java, I got 
>>>the following errors:
>>>
>>>    [java] size=1461140, 1461140
>>>    [java] org.springframework.jdbc.UncategorizedSQLException: 
>>>(SqlMapClientTem
>>>plate): encountered SQLException [
>>>    [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>    [java] --- The error occurred while applying a parameter map.
>>>    [java] --- Check the insert_long-InlineParameterMap.
>>>    [java] --- Check the statement (update failed).
>>>    [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a LONG 
>>>value o
>>>nly for insert into a LONG column
>>>    [java] ]; nested exception is 
>>>com.ibatis.common.jdbc.exception.NestedSQLExc
>>>eption:
>>>    [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>    [java] --- The error occurred while applying a parameter map.
>>>    [java] --- Check the insert_long-InlineParameterMap.
>>>    [java] --- Check the statement (update failed).
>>>    [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a LONG 
>>>value o
>>>nly for insert into a LONG column
>>>
>>>Any idea?
>>>
>>>-Henry
>>>
>>>
>>>Brandon Goodin wrote:
>>>
>>>    
>>>
>>>>I'm not aware of this limitation. We have run into similar things
>>>>before with the oracle driver. But, upgrading has always fixed it.
>>>>Have you attempted a test using straight JDBC?
>>>>
>>>>Brandon
>>>>
>>>>On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
>>>> 
>>>>
>>>>      
>>>>
>>>>>I got the following errors when I insert a large text into a CLOB in
>>>>>oracle by using iBatis. How do I resulve it? I am using Oracle 10G jdbc
>>>>>deiver.
>>>>>
>>>>>
>>>>>org.springframework.jdbc.UncategorizedSQLException:
>>>>>(SqlMapClientTemplate): encountered SQLException [
>>>>>--- The error occurred in
>>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>>--- The error occurred while applying a parameter map.
>>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>>less than 32766 chararacters]; nested exception is
>>>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>>--- The error occurred in
>>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>>--- The error occurred while applying a parameter map.
>>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>>less than 32766 chararacters
>>>>>org.springframework.jdbc.UncategorizedSQLException:
>>>>>(SqlMapClientTemplate): encountered SQLException [
>>>>>--- The error occurred in
>>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>>--- The error occurred while applying a parameter map.
>>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>>less than 32766 chararacters]; nested exception is
>>>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>>--- The error occurred in
>>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>>--- The error occurred while applying a parameter map.
>>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>>less than 32766 chararacters
>>>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>>--- The error occurred in
>>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>>--- The error occurred while applying a parameter map.
>>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>>less than 32766 chararacters
>>>>>Caused by: java.sql.SQLException: setString can only process strings of
>>>>>less than 32766 chararacters
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:87)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
>>>>>   at
>>>>>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>>>   at
>>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
>>>>>   at
>>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
>>>>>   at
>>>>>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>>>   at
>>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>>>   at
>>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>>>>   at java.lang.reflect.Method.invoke(Unknown Source)
>>>>>   at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>>   at junit.framework.TestCase.runBare(TestCase.java:127)
>>>>>   at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>>   at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>>   at junit.framework.TestResult.run(TestResult.java:109)
>>>>>   at junit.framework.TestCase.run(TestCase.java:118)
>>>>>   at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>>   at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>>   at
>>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>>>>>   at
>>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>>>>>   at
>>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
>>>>>Caused by: java.sql.SQLException: setString can only process strings of
>>>>>less than 32766 chararacters
>>>>>   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)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
>>>>>   ... 23 more
>>>>>
>>>>>Caused by:
>>>>>java.sql.SQLException: setString can only process strings of less than
>>>>>32766 chararacters
>>>>>   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)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
>>>>>   at
>>>>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
>>>>>   at
>>>>>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>>>   at
>>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
>>>>>   at
>>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
>>>>>   at
>>>>>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>>>   at
>>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>>>   at
>>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>>>>   at java.lang.reflect.Method.invoke(Unknown Source)
>>>>>   at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>>   at junit.framework.TestCase.runBare(TestCase.java:127)
>>>>>   at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>>   at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>>   at junit.framework.TestResult.run(TestResult.java:109)
>>>>>   at junit.framework.TestCase.run(TestCase.java:118)
>>>>>   at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>>   at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>>   at
>>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>>>>>   at
>>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>>>>>   at
>>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
>>>>>
>>>>>-Henry
>>>>>
>>>>>   
>>>>>
>>>>>        
>>>>>
>>>> 
>>>>
>>>>      
>>>>
>>
>>
>>
>>  
>>


Re: 32k limitations for clob/blob?

Posted by Henry Lu <zh...@umich.edu>.
Thanks for your info. I change my sql to be:

  <insert id="insert_clob">
   insert into x_clob
          (name,c)
    values
          (#name:VARCHAR#,to_lob(#c:VARCHAR#))
  </insert>

and got the following errors:

     [java] size=1819572, 1819572
     [java] org.springframework.jdbc.BadSqlGrammarException: Bad SQL 
grammar [(m
apped statement)] in task 'SqlMapClientTemplate'; nested exception is 
com.ibatis
.common.jdbc.exception.NestedSQLException:
     [java] --- The error occurred in ibatis_map/AccessDB.xml.
     [java] --- The error occurred while applying a parameter map.
     [java] --- Check the insert_clob-InlineParameterMap.
     [java] --- Check the statement (update failed).
     [java] --- Cause: java.sql.SQLException: ORA-00932: inconsistent 
datatypes:
 expected - got BINARY

-Henry

Sven Boden wrote:

>Item 1 is String limitation.
>
>Item 2 I've never hit when using iBatis. I did get it however a few
>times in PL-SQL... the problem was then solved by using the Oracle
>function to_lob() while inserting the lob.
>
>Regards,
>Sven Boden
>
>On Thu, 09 Jun 2005 13:05:50 -0400, you wrote:
>
>  
>
>>No, I didn't. However, I got more details on the errors.
>>1. If I insert into CLOB or LONG as jdbc type with String in java, I got 
>>the 32K limitation error.
>>
>>    [java] size=1551138, 1551138
>>    [java] org.springframework.jdbc.UncategorizedSQLException: 
>>(SqlMapClientTem
>>plate): encountered SQLException [
>>    [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>    [java] --- The error occurred while applying a parameter map.
>>    [java] --- Check the insert_long-InlineParameterMap.
>>    [java] --- Check the parameter mapping for the 'l' property.
>>    [java] --- Cause: java.sql.SQLException: setString can only process 
>>strings
>>of less than 32766 chararacters]; nested exception is 
>>com.ibatis.common.jdbc.ex
>>ception.NestedSQLException:
>>    [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>    [java] --- The error occurred while applying a parameter map.
>>    [java] --- Check the insert_long-InlineParameterMap.
>>    [java] --- Check the parameter mapping for the 'l' property.
>>    [java] --- Cause: java.sql.SQLException: setString can only process 
>>strings
>>of less than 32766 chararacters
>>
>>2. If I insert into CLOB or LONG as jdbc type with byte[] in java, I got 
>>the following errors:
>>
>>    [java] size=1461140, 1461140
>>    [java] org.springframework.jdbc.UncategorizedSQLException: 
>>(SqlMapClientTem
>>plate): encountered SQLException [
>>    [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>    [java] --- The error occurred while applying a parameter map.
>>    [java] --- Check the insert_long-InlineParameterMap.
>>    [java] --- Check the statement (update failed).
>>    [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a LONG 
>>value o
>>nly for insert into a LONG column
>>    [java] ]; nested exception is 
>>com.ibatis.common.jdbc.exception.NestedSQLExc
>>eption:
>>    [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>    [java] --- The error occurred while applying a parameter map.
>>    [java] --- Check the insert_long-InlineParameterMap.
>>    [java] --- Check the statement (update failed).
>>    [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a LONG 
>>value o
>>nly for insert into a LONG column
>>
>>Any idea?
>>
>>-Henry
>>
>>
>>Brandon Goodin wrote:
>>
>>    
>>
>>>I'm not aware of this limitation. We have run into similar things
>>>before with the oracle driver. But, upgrading has always fixed it.
>>>Have you attempted a test using straight JDBC?
>>>
>>>Brandon
>>>
>>>On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
>>> 
>>>
>>>      
>>>
>>>>I got the following errors when I insert a large text into a CLOB in
>>>>oracle by using iBatis. How do I resulve it? I am using Oracle 10G jdbc
>>>>deiver.
>>>>
>>>>
>>>>org.springframework.jdbc.UncategorizedSQLException:
>>>>(SqlMapClientTemplate): encountered SQLException [
>>>>--- The error occurred in
>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>--- The error occurred while applying a parameter map.
>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>less than 32766 chararacters]; nested exception is
>>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>--- The error occurred in
>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>--- The error occurred while applying a parameter map.
>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>less than 32766 chararacters
>>>>org.springframework.jdbc.UncategorizedSQLException:
>>>>(SqlMapClientTemplate): encountered SQLException [
>>>>--- The error occurred in
>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>--- The error occurred while applying a parameter map.
>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>less than 32766 chararacters]; nested exception is
>>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>--- The error occurred in
>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>--- The error occurred while applying a parameter map.
>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>less than 32766 chararacters
>>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>--- The error occurred in
>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>--- The error occurred while applying a parameter map.
>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>less than 32766 chararacters
>>>>Caused by: java.sql.SQLException: setString can only process strings of
>>>>less than 32766 chararacters
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:87)
>>>>   at
>>>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
>>>>   at
>>>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
>>>>   at
>>>>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>>   at
>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
>>>>   at
>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
>>>>   at
>>>>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>>   at
>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>>   at
>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>>>   at java.lang.reflect.Method.invoke(Unknown Source)
>>>>   at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>   at junit.framework.TestCase.runBare(TestCase.java:127)
>>>>   at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>   at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>   at junit.framework.TestResult.run(TestResult.java:109)
>>>>   at junit.framework.TestCase.run(TestCase.java:118)
>>>>   at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>   at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>   at
>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>>>>   at
>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>>>>   at
>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
>>>>Caused by: java.sql.SQLException: setString can only process strings of
>>>>less than 32766 chararacters
>>>>   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)
>>>>   at
>>>>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
>>>>   at
>>>>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
>>>>   at
>>>>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
>>>>   at
>>>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
>>>>   ... 23 more
>>>>
>>>>Caused by:
>>>>java.sql.SQLException: setString can only process strings of less than
>>>>32766 chararacters
>>>>   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)
>>>>   at
>>>>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
>>>>   at
>>>>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
>>>>   at
>>>>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
>>>>   at
>>>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
>>>>   at
>>>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
>>>>   at
>>>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
>>>>   at
>>>>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>>   at
>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
>>>>   at
>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
>>>>   at
>>>>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>>   at
>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>>   at
>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>>>   at java.lang.reflect.Method.invoke(Unknown Source)
>>>>   at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>   at junit.framework.TestCase.runBare(TestCase.java:127)
>>>>   at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>   at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>   at junit.framework.TestResult.run(TestResult.java:109)
>>>>   at junit.framework.TestCase.run(TestCase.java:118)
>>>>   at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>   at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>   at
>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>>>>   at
>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>>>>   at
>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
>>>>
>>>>-Henry
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>> 
>>>
>>>      
>>>
>
>
>
>  
>

Re: 32k limitations for clob/blob?

Posted by Sven Boden <li...@pandora.be>.
Item 1 is String limitation.

Item 2 I've never hit when using iBatis. I did get it however a few
times in PL-SQL... the problem was then solved by using the Oracle
function to_lob() while inserting the lob.

Regards,
Sven Boden

On Thu, 09 Jun 2005 13:05:50 -0400, you wrote:

>No, I didn't. However, I got more details on the errors.
>1. If I insert into CLOB or LONG as jdbc type with String in java, I got 
>the 32K limitation error.
>
>     [java] size=1551138, 1551138
>     [java] org.springframework.jdbc.UncategorizedSQLException: 
>(SqlMapClientTem
>plate): encountered SQLException [
>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>     [java] --- The error occurred while applying a parameter map.
>     [java] --- Check the insert_long-InlineParameterMap.
>     [java] --- Check the parameter mapping for the 'l' property.
>     [java] --- Cause: java.sql.SQLException: setString can only process 
>strings
> of less than 32766 chararacters]; nested exception is 
>com.ibatis.common.jdbc.ex
>ception.NestedSQLException:
>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>     [java] --- The error occurred while applying a parameter map.
>     [java] --- Check the insert_long-InlineParameterMap.
>     [java] --- Check the parameter mapping for the 'l' property.
>     [java] --- Cause: java.sql.SQLException: setString can only process 
>strings
> of less than 32766 chararacters
>
>2. If I insert into CLOB or LONG as jdbc type with byte[] in java, I got 
>the following errors:
>
>     [java] size=1461140, 1461140
>     [java] org.springframework.jdbc.UncategorizedSQLException: 
>(SqlMapClientTem
>plate): encountered SQLException [
>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>     [java] --- The error occurred while applying a parameter map.
>     [java] --- Check the insert_long-InlineParameterMap.
>     [java] --- Check the statement (update failed).
>     [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a LONG 
>value o
>nly for insert into a LONG column
>     [java] ]; nested exception is 
>com.ibatis.common.jdbc.exception.NestedSQLExc
>eption:
>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>     [java] --- The error occurred while applying a parameter map.
>     [java] --- Check the insert_long-InlineParameterMap.
>     [java] --- Check the statement (update failed).
>     [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a LONG 
>value o
>nly for insert into a LONG column
>
>Any idea?
>
>-Henry
>
>
>Brandon Goodin wrote:
>
>>I'm not aware of this limitation. We have run into similar things
>>before with the oracle driver. But, upgrading has always fixed it.
>>Have you attempted a test using straight JDBC?
>>
>>Brandon
>>
>>On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
>>  
>>
>>>I got the following errors when I insert a large text into a CLOB in
>>>oracle by using iBatis. How do I resulve it? I am using Oracle 10G jdbc
>>>deiver.
>>>
>>>
>>>org.springframework.jdbc.UncategorizedSQLException:
>>>(SqlMapClientTemplate): encountered SQLException [
>>>--- The error occurred in
>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>--- The error occurred while applying a parameter map.
>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>less than 32766 chararacters]; nested exception is
>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>--- The error occurred in
>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>--- The error occurred while applying a parameter map.
>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>less than 32766 chararacters
>>>org.springframework.jdbc.UncategorizedSQLException:
>>>(SqlMapClientTemplate): encountered SQLException [
>>>--- The error occurred in
>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>--- The error occurred while applying a parameter map.
>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>less than 32766 chararacters]; nested exception is
>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>--- The error occurred in
>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>--- The error occurred while applying a parameter map.
>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>less than 32766 chararacters
>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>--- The error occurred in
>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>--- The error occurred while applying a parameter map.
>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>less than 32766 chararacters
>>>Caused by: java.sql.SQLException: setString can only process strings of
>>>less than 32766 chararacters
>>>    at
>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:87)
>>>    at
>>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
>>>    at
>>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
>>>    at
>>>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>    at
>>>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
>>>    at
>>>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
>>>    at
>>>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>    at
>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>    at
>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>>    at java.lang.reflect.Method.invoke(Unknown Source)
>>>    at junit.framework.TestCase.runTest(TestCase.java:154)
>>>    at junit.framework.TestCase.runBare(TestCase.java:127)
>>>    at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>    at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>    at junit.framework.TestResult.run(TestResult.java:109)
>>>    at junit.framework.TestCase.run(TestCase.java:118)
>>>    at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>    at junit.framework.TestSuite.run(TestSuite.java:203)
>>>    at
>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>>>    at
>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>>>    at
>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
>>>Caused by: java.sql.SQLException: setString can only process strings of
>>>less than 32766 chararacters
>>>    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)
>>>    at
>>>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
>>>    at
>>>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
>>>    at
>>>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
>>>    at
>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
>>>    at
>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
>>>    at
>>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
>>>    at
>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
>>>    at
>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
>>>    ... 23 more
>>>
>>>Caused by:
>>>java.sql.SQLException: setString can only process strings of less than
>>>32766 chararacters
>>>    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)
>>>    at
>>>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
>>>    at
>>>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
>>>    at
>>>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
>>>    at
>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
>>>    at
>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
>>>    at
>>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
>>>    at
>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
>>>    at
>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
>>>    at
>>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
>>>    at
>>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
>>>    at
>>>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>    at
>>>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
>>>    at
>>>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
>>>    at
>>>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>    at
>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>    at
>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>>    at java.lang.reflect.Method.invoke(Unknown Source)
>>>    at junit.framework.TestCase.runTest(TestCase.java:154)
>>>    at junit.framework.TestCase.runBare(TestCase.java:127)
>>>    at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>    at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>    at junit.framework.TestResult.run(TestResult.java:109)
>>>    at junit.framework.TestCase.run(TestCase.java:118)
>>>    at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>    at junit.framework.TestSuite.run(TestSuite.java:203)
>>>    at
>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>>>    at
>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>>>    at
>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
>>>
>>>-Henry
>>>
>>>    
>>>
>>
>>
>>  
>>


Re: 32k limitations for clob/blob?

Posted by Henry Lu <zh...@umich.edu>.
1. BLOB works at all.
2. CLOB and LONG don't work for me.
3. I am using the 10G jdbc driver.

-Henry

Nathan Maves wrote:

> Are you sure that your drivers are the most up-to-date available?
>
> http://opensource.atlassian.com/confluence/oss/display/IBATIS/How+do+I 
> +use+a+Custom+Type+Handler+with+a+BLOB+or+CLOB%3F
>
> Check at the bottom of the page.
>
> Nathan
>
> On Jun 9, 2005, at 11:47 AM, Henry Lu wrote:
>
>> Could you send me an example of TypeHandlers in java? I only find  
>> some code in .NET.
>>
>> -Henry
>>
>> Brandon Goodin wrote:
>>
>>
>>> I don't have any idea off the top of my head. This may be a good
>>> opportunity for you to do it with straight JDBC to see what works and
>>> then look at our TypeHandlers to see how they are translating.
>>>
>>> Brandon
>>>
>>> On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
>>>
>>>
>>>> No, I didn't. However, I got more details on the errors.
>>>> 1. If I insert into CLOB or LONG as jdbc type with String in  java, 
>>>> I got
>>>> the 32K limitation error.
>>>>
>>>>     [java] size=1551138, 1551138
>>>>     [java] org.springframework.jdbc.UncategorizedSQLException:
>>>> (SqlMapClientTem
>>>> plate): encountered SQLException [
>>>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>>     [java] --- The error occurred while applying a parameter map.
>>>>     [java] --- Check the insert_long-InlineParameterMap.
>>>>     [java] --- Check the parameter mapping for the 'l' property.
>>>>     [java] --- Cause: java.sql.SQLException: setString can only  
>>>> process
>>>> strings
>>>> of less than 32766 chararacters]; nested exception is
>>>> com.ibatis.common.jdbc.ex
>>>> ception.NestedSQLException:
>>>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>>     [java] --- The error occurred while applying a parameter map.
>>>>     [java] --- Check the insert_long-InlineParameterMap.
>>>>     [java] --- Check the parameter mapping for the 'l' property.
>>>>     [java] --- Cause: java.sql.SQLException: setString can only  
>>>> process
>>>> strings
>>>> of less than 32766 chararacters
>>>>
>>>> 2. If I insert into CLOB or LONG as jdbc type with byte[] in  java, 
>>>> I got
>>>> the following errors:
>>>>
>>>>     [java] size=1461140, 1461140
>>>>     [java] org.springframework.jdbc.UncategorizedSQLException:
>>>> (SqlMapClientTem
>>>> plate): encountered SQLException [
>>>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>>     [java] --- The error occurred while applying a parameter map.
>>>>     [java] --- Check the insert_long-InlineParameterMap.
>>>>     [java] --- Check the statement (update failed).
>>>>     [java] --- Cause: java.sql.SQLException: ORA-01461: can bind  a 
>>>> LONG
>>>> value o
>>>> nly for insert into a LONG column
>>>>     [java] ]; nested exception is
>>>> com.ibatis.common.jdbc.exception.NestedSQLExc
>>>> eption:
>>>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>>     [java] --- The error occurred while applying a parameter map.
>>>>     [java] --- Check the insert_long-InlineParameterMap.
>>>>     [java] --- Check the statement (update failed).
>>>>     [java] --- Cause: java.sql.SQLException: ORA-01461: can bind  a 
>>>> LONG
>>>> value o
>>>> nly for insert into a LONG column
>>>>
>>>> Any idea?
>>>>
>>>> -Henry
>>>>
>>>>
>>>> Brandon Goodin wrote:
>>>>
>>>>
>>>>
>>>>> I'm not aware of this limitation. We have run into similar things
>>>>> before with the oracle driver. But, upgrading has always fixed it.
>>>>> Have you attempted a test using straight JDBC?
>>>>>
>>>>> Brandon
>>>>>
>>>>> On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> I got the following errors when I insert a large text into a  
>>>>>> CLOB in
>>>>>> oracle by using iBatis. How do I resulve it? I am using Oracle  
>>>>>> 10G jdbc
>>>>>> deiver.
>>>>>>
>>>>>>
>>>>>> org.springframework.jdbc.UncategorizedSQLException:
>>>>>> (SqlMapClientTemplate): encountered SQLException [
>>>>>> --- The error occurred in
>>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>>> tgs_info_trainee.xml.
>>>>>> --- The error occurred while applying a parameter map.
>>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>>> strings of
>>>>>> less than 32766 chararacters]; nested exception is
>>>>>> com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>>> --- The error occurred in
>>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>>> tgs_info_trainee.xml.
>>>>>> --- The error occurred while applying a parameter map.
>>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>>> strings of
>>>>>> less than 32766 chararacters
>>>>>> org.springframework.jdbc.UncategorizedSQLException:
>>>>>> (SqlMapClientTemplate): encountered SQLException [
>>>>>> --- The error occurred in
>>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>>> tgs_info_trainee.xml.
>>>>>> --- The error occurred while applying a parameter map.
>>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>>> strings of
>>>>>> less than 32766 chararacters]; nested exception is
>>>>>> com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>>> --- The error occurred in
>>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>>> tgs_info_trainee.xml.
>>>>>> --- The error occurred while applying a parameter map.
>>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>>> strings of
>>>>>> less than 32766 chararacters
>>>>>> com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>>> --- The error occurred in
>>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>>> tgs_info_trainee.xml.
>>>>>> --- The error occurred while applying a parameter map.
>>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>>> strings of
>>>>>> less than 32766 chararacters
>>>>>> Caused by: java.sql.SQLException: setString can only process  
>>>>>> strings of
>>>>>> less than 32766 chararacters
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.execut 
>>>>>> eUpdate(GeneralStatement.java:87)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update 
>>>>>> (SqlMapExecutorDelegate.java:500)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update 
>>>>>> (SqlMapSessionImpl.java:89)
>>>>>>   at
>>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate 
>>>>>> $11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>>>>   at
>>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate.execute 
>>>>>> (SqlMapClientTemplate.java:140)
>>>>>>   at
>>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate.update 
>>>>>> (SqlMapClientTemplate.java:280)
>>>>>>   at
>>>>>> edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.ins 
>>>>>> ertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>>>>   at
>>>>>> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTes 
>>>>>> tCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>>>>   at
>>>>>> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTes 
>>>>>> tCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>>>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown  
>>>>>> Source)
>>>>>>   at java.lang.reflect.Method.invoke(Unknown Source)
>>>>>>   at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>>>   at junit.framework.TestCase.runBare(TestCase.java:127)
>>>>>>   at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>>>   at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>>>   at junit.framework.TestResult.run(TestResult.java:109)
>>>>>>   at junit.framework.TestCase.run(TestCase.java:118)
>>>>>>   at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>>>   at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>>>   at
>>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests 
>>>>>> (RemoteTestRunner.java:474)
>>>>>>   at
>>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run 
>>>>>> (RemoteTestRunner.java:342)
>>>>>>   at
>>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main 
>>>>>> (RemoteTestRunner.java:194)
>>>>>> Caused by: java.sql.SQLException: setString can only process  
>>>>>> strings of
>>>>>> less than 32766 chararacters
>>>>>>   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)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString 
>>>>>> (ParameterSetterImpl.java:139)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter 
>>>>>> (ClobTypeHandlerCallback.java:45)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter 
>>>>>> (CustomTypeHandler.java:46)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPa 
>>>>>> rameter(BasicParameterMap.java:165)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPa 
>>>>>> rameters(BasicParameterMap.java:125)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate 
>>>>>> (SqlExecutor.java:80)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExe 
>>>>>> cuteUpdate(GeneralStatement.java:196)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.execut 
>>>>>> eUpdate(GeneralStatement.java:74)
>>>>>>   ... 23 more
>>>>>>
>>>>>> Caused by:
>>>>>> java.sql.SQLException: setString can only process strings of  
>>>>>> less than
>>>>>> 32766 chararacters
>>>>>>   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)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString 
>>>>>> (ParameterSetterImpl.java:139)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter 
>>>>>> (ClobTypeHandlerCallback.java:45)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter 
>>>>>> (CustomTypeHandler.java:46)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPa 
>>>>>> rameter(BasicParameterMap.java:165)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPa 
>>>>>> rameters(BasicParameterMap.java:125)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate 
>>>>>> (SqlExecutor.java:80)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExe 
>>>>>> cuteUpdate(GeneralStatement.java:196)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.execut 
>>>>>> eUpdate(GeneralStatement.java:74)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update 
>>>>>> (SqlMapExecutorDelegate.java:500)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update 
>>>>>> (SqlMapSessionImpl.java:89)
>>>>>>   at
>>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate 
>>>>>> $11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>>>>   at
>>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate.execute 
>>>>>> (SqlMapClientTemplate.java:140)
>>>>>>   at
>>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate.update 
>>>>>> (SqlMapClientTemplate.java:280)
>>>>>>   at
>>>>>> edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.ins 
>>>>>> ertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>>>>   at
>>>>>> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTes 
>>>>>> tCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>>>>   at
>>>>>> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTes 
>>>>>> tCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>>>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown  
>>>>>> Source)
>>>>>>   at java.lang.reflect.Method.invoke(Unknown Source)
>>>>>>   at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>>>   at junit.framework.TestCase.runBare(TestCase.java:127)
>>>>>>   at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>>>   at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>>>   at junit.framework.TestResult.run(TestResult.java:109)
>>>>>>   at junit.framework.TestCase.run(TestCase.java:118)
>>>>>>   at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>>>   at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>>>   at
>>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests 
>>>>>> (RemoteTestRunner.java:474)
>>>>>>   at
>>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run 
>>>>>> (RemoteTestRunner.java:342)
>>>>>>   at
>>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main 
>>>>>> (RemoteTestRunner.java:194)
>>>>>>
>>>>>> -Henry
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>>
>>>
>>
>
>
>

Re: 32k limitations for clob/blob?

Posted by Henry Lu <zh...@umich.edu>.
If you change BLOB to CLOB in the example, it DIDn't work!!!

-Henry

Nathan Maves wrote:

> Are you sure that your drivers are the most up-to-date available?
>
> http://opensource.atlassian.com/confluence/oss/display/IBATIS/How+do+I 
> +use+a+Custom+Type+Handler+with+a+BLOB+or+CLOB%3F
>
> Check at the bottom of the page.
>
> Nathan
>
> On Jun 9, 2005, at 11:47 AM, Henry Lu wrote:
>
>> Could you send me an example of TypeHandlers in java? I only find  
>> some code in .NET.
>>
>> -Henry
>>
>> Brandon Goodin wrote:
>>
>>
>>> I don't have any idea off the top of my head. This may be a good
>>> opportunity for you to do it with straight JDBC to see what works and
>>> then look at our TypeHandlers to see how they are translating.
>>>
>>> Brandon
>>>
>>> On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
>>>
>>>
>>>> No, I didn't. However, I got more details on the errors.
>>>> 1. If I insert into CLOB or LONG as jdbc type with String in  java, 
>>>> I got
>>>> the 32K limitation error.
>>>>
>>>>     [java] size=1551138, 1551138
>>>>     [java] org.springframework.jdbc.UncategorizedSQLException:
>>>> (SqlMapClientTem
>>>> plate): encountered SQLException [
>>>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>>     [java] --- The error occurred while applying a parameter map.
>>>>     [java] --- Check the insert_long-InlineParameterMap.
>>>>     [java] --- Check the parameter mapping for the 'l' property.
>>>>     [java] --- Cause: java.sql.SQLException: setString can only  
>>>> process
>>>> strings
>>>> of less than 32766 chararacters]; nested exception is
>>>> com.ibatis.common.jdbc.ex
>>>> ception.NestedSQLException:
>>>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>>     [java] --- The error occurred while applying a parameter map.
>>>>     [java] --- Check the insert_long-InlineParameterMap.
>>>>     [java] --- Check the parameter mapping for the 'l' property.
>>>>     [java] --- Cause: java.sql.SQLException: setString can only  
>>>> process
>>>> strings
>>>> of less than 32766 chararacters
>>>>
>>>> 2. If I insert into CLOB or LONG as jdbc type with byte[] in  java, 
>>>> I got
>>>> the following errors:
>>>>
>>>>     [java] size=1461140, 1461140
>>>>     [java] org.springframework.jdbc.UncategorizedSQLException:
>>>> (SqlMapClientTem
>>>> plate): encountered SQLException [
>>>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>>     [java] --- The error occurred while applying a parameter map.
>>>>     [java] --- Check the insert_long-InlineParameterMap.
>>>>     [java] --- Check the statement (update failed).
>>>>     [java] --- Cause: java.sql.SQLException: ORA-01461: can bind  a 
>>>> LONG
>>>> value o
>>>> nly for insert into a LONG column
>>>>     [java] ]; nested exception is
>>>> com.ibatis.common.jdbc.exception.NestedSQLExc
>>>> eption:
>>>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>>     [java] --- The error occurred while applying a parameter map.
>>>>     [java] --- Check the insert_long-InlineParameterMap.
>>>>     [java] --- Check the statement (update failed).
>>>>     [java] --- Cause: java.sql.SQLException: ORA-01461: can bind  a 
>>>> LONG
>>>> value o
>>>> nly for insert into a LONG column
>>>>
>>>> Any idea?
>>>>
>>>> -Henry
>>>>
>>>>
>>>> Brandon Goodin wrote:
>>>>
>>>>
>>>>
>>>>> I'm not aware of this limitation. We have run into similar things
>>>>> before with the oracle driver. But, upgrading has always fixed it.
>>>>> Have you attempted a test using straight JDBC?
>>>>>
>>>>> Brandon
>>>>>
>>>>> On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> I got the following errors when I insert a large text into a  
>>>>>> CLOB in
>>>>>> oracle by using iBatis. How do I resulve it? I am using Oracle  
>>>>>> 10G jdbc
>>>>>> deiver.
>>>>>>
>>>>>>
>>>>>> org.springframework.jdbc.UncategorizedSQLException:
>>>>>> (SqlMapClientTemplate): encountered SQLException [
>>>>>> --- The error occurred in
>>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>>> tgs_info_trainee.xml.
>>>>>> --- The error occurred while applying a parameter map.
>>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>>> strings of
>>>>>> less than 32766 chararacters]; nested exception is
>>>>>> com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>>> --- The error occurred in
>>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>>> tgs_info_trainee.xml.
>>>>>> --- The error occurred while applying a parameter map.
>>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>>> strings of
>>>>>> less than 32766 chararacters
>>>>>> org.springframework.jdbc.UncategorizedSQLException:
>>>>>> (SqlMapClientTemplate): encountered SQLException [
>>>>>> --- The error occurred in
>>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>>> tgs_info_trainee.xml.
>>>>>> --- The error occurred while applying a parameter map.
>>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>>> strings of
>>>>>> less than 32766 chararacters]; nested exception is
>>>>>> com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>>> --- The error occurred in
>>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>>> tgs_info_trainee.xml.
>>>>>> --- The error occurred while applying a parameter map.
>>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>>> strings of
>>>>>> less than 32766 chararacters
>>>>>> com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>>> --- The error occurred in
>>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>>> tgs_info_trainee.xml.
>>>>>> --- The error occurred while applying a parameter map.
>>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>>> strings of
>>>>>> less than 32766 chararacters
>>>>>> Caused by: java.sql.SQLException: setString can only process  
>>>>>> strings of
>>>>>> less than 32766 chararacters
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.execut 
>>>>>> eUpdate(GeneralStatement.java:87)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update 
>>>>>> (SqlMapExecutorDelegate.java:500)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update 
>>>>>> (SqlMapSessionImpl.java:89)
>>>>>>   at
>>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate 
>>>>>> $11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>>>>   at
>>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate.execute 
>>>>>> (SqlMapClientTemplate.java:140)
>>>>>>   at
>>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate.update 
>>>>>> (SqlMapClientTemplate.java:280)
>>>>>>   at
>>>>>> edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.ins 
>>>>>> ertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>>>>   at
>>>>>> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTes 
>>>>>> tCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>>>>   at
>>>>>> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTes 
>>>>>> tCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>>>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown  
>>>>>> Source)
>>>>>>   at java.lang.reflect.Method.invoke(Unknown Source)
>>>>>>   at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>>>   at junit.framework.TestCase.runBare(TestCase.java:127)
>>>>>>   at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>>>   at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>>>   at junit.framework.TestResult.run(TestResult.java:109)
>>>>>>   at junit.framework.TestCase.run(TestCase.java:118)
>>>>>>   at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>>>   at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>>>   at
>>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests 
>>>>>> (RemoteTestRunner.java:474)
>>>>>>   at
>>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run 
>>>>>> (RemoteTestRunner.java:342)
>>>>>>   at
>>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main 
>>>>>> (RemoteTestRunner.java:194)
>>>>>> Caused by: java.sql.SQLException: setString can only process  
>>>>>> strings of
>>>>>> less than 32766 chararacters
>>>>>>   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)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString 
>>>>>> (ParameterSetterImpl.java:139)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter 
>>>>>> (ClobTypeHandlerCallback.java:45)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter 
>>>>>> (CustomTypeHandler.java:46)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPa 
>>>>>> rameter(BasicParameterMap.java:165)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPa 
>>>>>> rameters(BasicParameterMap.java:125)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate 
>>>>>> (SqlExecutor.java:80)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExe 
>>>>>> cuteUpdate(GeneralStatement.java:196)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.execut 
>>>>>> eUpdate(GeneralStatement.java:74)
>>>>>>   ... 23 more
>>>>>>
>>>>>> Caused by:
>>>>>> java.sql.SQLException: setString can only process strings of  
>>>>>> less than
>>>>>> 32766 chararacters
>>>>>>   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)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString 
>>>>>> (ParameterSetterImpl.java:139)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter 
>>>>>> (ClobTypeHandlerCallback.java:45)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter 
>>>>>> (CustomTypeHandler.java:46)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPa 
>>>>>> rameter(BasicParameterMap.java:165)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPa 
>>>>>> rameters(BasicParameterMap.java:125)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate 
>>>>>> (SqlExecutor.java:80)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExe 
>>>>>> cuteUpdate(GeneralStatement.java:196)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.execut 
>>>>>> eUpdate(GeneralStatement.java:74)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update 
>>>>>> (SqlMapExecutorDelegate.java:500)
>>>>>>   at
>>>>>> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update 
>>>>>> (SqlMapSessionImpl.java:89)
>>>>>>   at
>>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate 
>>>>>> $11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>>>>   at
>>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate.execute 
>>>>>> (SqlMapClientTemplate.java:140)
>>>>>>   at
>>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate.update 
>>>>>> (SqlMapClientTemplate.java:280)
>>>>>>   at
>>>>>> edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.ins 
>>>>>> ertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>>>>   at
>>>>>> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTes 
>>>>>> tCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>>>>   at
>>>>>> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTes 
>>>>>> tCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>>>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown  
>>>>>> Source)
>>>>>>   at java.lang.reflect.Method.invoke(Unknown Source)
>>>>>>   at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>>>   at junit.framework.TestCase.runBare(TestCase.java:127)
>>>>>>   at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>>>   at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>>>   at junit.framework.TestResult.run(TestResult.java:109)
>>>>>>   at junit.framework.TestCase.run(TestCase.java:118)
>>>>>>   at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>>>   at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>>>   at
>>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests 
>>>>>> (RemoteTestRunner.java:474)
>>>>>>   at
>>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run 
>>>>>> (RemoteTestRunner.java:342)
>>>>>>   at
>>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main 
>>>>>> (RemoteTestRunner.java:194)
>>>>>>
>>>>>> -Henry
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>>
>>>
>>
>
>
>

Re: 32k limitations for clob/blob?

Posted by Nathan Maves <Na...@Sun.COM>.
Are you sure that your drivers are the most up-to-date available?

http://opensource.atlassian.com/confluence/oss/display/IBATIS/How+do+I 
+use+a+Custom+Type+Handler+with+a+BLOB+or+CLOB%3F

Check at the bottom of the page.

Nathan

On Jun 9, 2005, at 11:47 AM, Henry Lu wrote:

> Could you send me an example of TypeHandlers in java? I only find  
> some code in .NET.
>
> -Henry
>
> Brandon Goodin wrote:
>
>
>> I don't have any idea off the top of my head. This may be a good
>> opportunity for you to do it with straight JDBC to see what works and
>> then look at our TypeHandlers to see how they are translating.
>>
>> Brandon
>>
>> On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
>>
>>
>>> No, I didn't. However, I got more details on the errors.
>>> 1. If I insert into CLOB or LONG as jdbc type with String in  
>>> java, I got
>>> the 32K limitation error.
>>>
>>>     [java] size=1551138, 1551138
>>>     [java] org.springframework.jdbc.UncategorizedSQLException:
>>> (SqlMapClientTem
>>> plate): encountered SQLException [
>>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>     [java] --- The error occurred while applying a parameter map.
>>>     [java] --- Check the insert_long-InlineParameterMap.
>>>     [java] --- Check the parameter mapping for the 'l' property.
>>>     [java] --- Cause: java.sql.SQLException: setString can only  
>>> process
>>> strings
>>> of less than 32766 chararacters]; nested exception is
>>> com.ibatis.common.jdbc.ex
>>> ception.NestedSQLException:
>>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>     [java] --- The error occurred while applying a parameter map.
>>>     [java] --- Check the insert_long-InlineParameterMap.
>>>     [java] --- Check the parameter mapping for the 'l' property.
>>>     [java] --- Cause: java.sql.SQLException: setString can only  
>>> process
>>> strings
>>> of less than 32766 chararacters
>>>
>>> 2. If I insert into CLOB or LONG as jdbc type with byte[] in  
>>> java, I got
>>> the following errors:
>>>
>>>     [java] size=1461140, 1461140
>>>     [java] org.springframework.jdbc.UncategorizedSQLException:
>>> (SqlMapClientTem
>>> plate): encountered SQLException [
>>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>     [java] --- The error occurred while applying a parameter map.
>>>     [java] --- Check the insert_long-InlineParameterMap.
>>>     [java] --- Check the statement (update failed).
>>>     [java] --- Cause: java.sql.SQLException: ORA-01461: can bind  
>>> a LONG
>>> value o
>>> nly for insert into a LONG column
>>>     [java] ]; nested exception is
>>> com.ibatis.common.jdbc.exception.NestedSQLExc
>>> eption:
>>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>>     [java] --- The error occurred while applying a parameter map.
>>>     [java] --- Check the insert_long-InlineParameterMap.
>>>     [java] --- Check the statement (update failed).
>>>     [java] --- Cause: java.sql.SQLException: ORA-01461: can bind  
>>> a LONG
>>> value o
>>> nly for insert into a LONG column
>>>
>>> Any idea?
>>>
>>> -Henry
>>>
>>>
>>> Brandon Goodin wrote:
>>>
>>>
>>>
>>>> I'm not aware of this limitation. We have run into similar things
>>>> before with the oracle driver. But, upgrading has always fixed it.
>>>> Have you attempted a test using straight JDBC?
>>>>
>>>> Brandon
>>>>
>>>> On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
>>>>
>>>>
>>>>
>>>>
>>>>> I got the following errors when I insert a large text into a  
>>>>> CLOB in
>>>>> oracle by using iBatis. How do I resulve it? I am using Oracle  
>>>>> 10G jdbc
>>>>> deiver.
>>>>>
>>>>>
>>>>> org.springframework.jdbc.UncategorizedSQLException:
>>>>> (SqlMapClientTemplate): encountered SQLException [
>>>>> --- The error occurred in
>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>> tgs_info_trainee.xml.
>>>>> --- The error occurred while applying a parameter map.
>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>> strings of
>>>>> less than 32766 chararacters]; nested exception is
>>>>> com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>> --- The error occurred in
>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>> tgs_info_trainee.xml.
>>>>> --- The error occurred while applying a parameter map.
>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>> strings of
>>>>> less than 32766 chararacters
>>>>> org.springframework.jdbc.UncategorizedSQLException:
>>>>> (SqlMapClientTemplate): encountered SQLException [
>>>>> --- The error occurred in
>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>> tgs_info_trainee.xml.
>>>>> --- The error occurred while applying a parameter map.
>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>> strings of
>>>>> less than 32766 chararacters]; nested exception is
>>>>> com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>> --- The error occurred in
>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>> tgs_info_trainee.xml.
>>>>> --- The error occurred while applying a parameter map.
>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>> strings of
>>>>> less than 32766 chararacters
>>>>> com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>> --- The error occurred in
>>>>> edu/umich/med/umms/tgsubmission/dao/ibatis_map/ 
>>>>> tgs_info_trainee.xml.
>>>>> --- The error occurred while applying a parameter map.
>>>>> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>> --- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>> --- Cause: java.sql.SQLException: setString can only process  
>>>>> strings of
>>>>> less than 32766 chararacters
>>>>> Caused by: java.sql.SQLException: setString can only process  
>>>>> strings of
>>>>> less than 32766 chararacters
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.execut 
>>>>> eUpdate(GeneralStatement.java:87)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update 
>>>>> (SqlMapExecutorDelegate.java:500)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update 
>>>>> (SqlMapSessionImpl.java:89)
>>>>>   at
>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate 
>>>>> $11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>>>   at
>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate.execute 
>>>>> (SqlMapClientTemplate.java:140)
>>>>>   at
>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate.update 
>>>>> (SqlMapClientTemplate.java:280)
>>>>>   at
>>>>> edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.ins 
>>>>> ertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>>>   at
>>>>> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTes 
>>>>> tCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>>>   at
>>>>> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTes 
>>>>> tCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown  
>>>>> Source)
>>>>>   at java.lang.reflect.Method.invoke(Unknown Source)
>>>>>   at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>>   at junit.framework.TestCase.runBare(TestCase.java:127)
>>>>>   at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>>   at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>>   at junit.framework.TestResult.run(TestResult.java:109)
>>>>>   at junit.framework.TestCase.run(TestCase.java:118)
>>>>>   at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>>   at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>>   at
>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests 
>>>>> (RemoteTestRunner.java:474)
>>>>>   at
>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run 
>>>>> (RemoteTestRunner.java:342)
>>>>>   at
>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main 
>>>>> (RemoteTestRunner.java:194)
>>>>> Caused by: java.sql.SQLException: setString can only process  
>>>>> strings of
>>>>> less than 32766 chararacters
>>>>>   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)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString 
>>>>> (ParameterSetterImpl.java:139)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter 
>>>>> (ClobTypeHandlerCallback.java:45)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter 
>>>>> (CustomTypeHandler.java:46)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPa 
>>>>> rameter(BasicParameterMap.java:165)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPa 
>>>>> rameters(BasicParameterMap.java:125)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate 
>>>>> (SqlExecutor.java:80)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExe 
>>>>> cuteUpdate(GeneralStatement.java:196)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.execut 
>>>>> eUpdate(GeneralStatement.java:74)
>>>>>   ... 23 more
>>>>>
>>>>> Caused by:
>>>>> java.sql.SQLException: setString can only process strings of  
>>>>> less than
>>>>> 32766 chararacters
>>>>>   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)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString 
>>>>> (ParameterSetterImpl.java:139)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter 
>>>>> (ClobTypeHandlerCallback.java:45)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter 
>>>>> (CustomTypeHandler.java:46)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPa 
>>>>> rameter(BasicParameterMap.java:165)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPa 
>>>>> rameters(BasicParameterMap.java:125)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate 
>>>>> (SqlExecutor.java:80)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExe 
>>>>> cuteUpdate(GeneralStatement.java:196)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.execut 
>>>>> eUpdate(GeneralStatement.java:74)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update 
>>>>> (SqlMapExecutorDelegate.java:500)
>>>>>   at
>>>>> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update 
>>>>> (SqlMapSessionImpl.java:89)
>>>>>   at
>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate 
>>>>> $11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>>>   at
>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate.execute 
>>>>> (SqlMapClientTemplate.java:140)
>>>>>   at
>>>>> org.springframework.orm.ibatis.SqlMapClientTemplate.update 
>>>>> (SqlMapClientTemplate.java:280)
>>>>>   at
>>>>> edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.ins 
>>>>> ertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>>>   at
>>>>> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTes 
>>>>> tCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>>>   at
>>>>> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTes 
>>>>> tCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown  
>>>>> Source)
>>>>>   at java.lang.reflect.Method.invoke(Unknown Source)
>>>>>   at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>>   at junit.framework.TestCase.runBare(TestCase.java:127)
>>>>>   at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>>   at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>>   at junit.framework.TestResult.run(TestResult.java:109)
>>>>>   at junit.framework.TestCase.run(TestCase.java:118)
>>>>>   at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>>   at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>>   at
>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests 
>>>>> (RemoteTestRunner.java:474)
>>>>>   at
>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run 
>>>>> (RemoteTestRunner.java:342)
>>>>>   at
>>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main 
>>>>> (RemoteTestRunner.java:194)
>>>>>
>>>>> -Henry
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>
>>
>>
>


Re: 32k limitations for clob/blob?

Posted by Henry Lu <zh...@umich.edu>.
Could you send me an example of TypeHandlers in java? I only find some 
code in .NET.

-Henry

Brandon Goodin wrote:

>I don't have any idea off the top of my head. This may be a good
>opportunity for you to do it with straight JDBC to see what works and
>then look at our TypeHandlers to see how they are translating.
>
>Brandon
>
>On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
>  
>
>>No, I didn't. However, I got more details on the errors.
>>1. If I insert into CLOB or LONG as jdbc type with String in java, I got
>>the 32K limitation error.
>>
>>     [java] size=1551138, 1551138
>>     [java] org.springframework.jdbc.UncategorizedSQLException:
>>(SqlMapClientTem
>>plate): encountered SQLException [
>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>     [java] --- The error occurred while applying a parameter map.
>>     [java] --- Check the insert_long-InlineParameterMap.
>>     [java] --- Check the parameter mapping for the 'l' property.
>>     [java] --- Cause: java.sql.SQLException: setString can only process
>>strings
>> of less than 32766 chararacters]; nested exception is
>>com.ibatis.common.jdbc.ex
>>ception.NestedSQLException:
>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>     [java] --- The error occurred while applying a parameter map.
>>     [java] --- Check the insert_long-InlineParameterMap.
>>     [java] --- Check the parameter mapping for the 'l' property.
>>     [java] --- Cause: java.sql.SQLException: setString can only process
>>strings
>> of less than 32766 chararacters
>>
>>2. If I insert into CLOB or LONG as jdbc type with byte[] in java, I got
>>the following errors:
>>
>>     [java] size=1461140, 1461140
>>     [java] org.springframework.jdbc.UncategorizedSQLException:
>>(SqlMapClientTem
>>plate): encountered SQLException [
>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>     [java] --- The error occurred while applying a parameter map.
>>     [java] --- Check the insert_long-InlineParameterMap.
>>     [java] --- Check the statement (update failed).
>>     [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a LONG
>>value o
>>nly for insert into a LONG column
>>     [java] ]; nested exception is
>>com.ibatis.common.jdbc.exception.NestedSQLExc
>>eption:
>>     [java] --- The error occurred in ibatis_map/AccessDB.xml.
>>     [java] --- The error occurred while applying a parameter map.
>>     [java] --- Check the insert_long-InlineParameterMap.
>>     [java] --- Check the statement (update failed).
>>     [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a LONG
>>value o
>>nly for insert into a LONG column
>>
>>Any idea?
>>
>>-Henry
>>
>>
>>Brandon Goodin wrote:
>>
>>    
>>
>>>I'm not aware of this limitation. We have run into similar things
>>>before with the oracle driver. But, upgrading has always fixed it.
>>>Have you attempted a test using straight JDBC?
>>>
>>>Brandon
>>>
>>>On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
>>>
>>>
>>>      
>>>
>>>>I got the following errors when I insert a large text into a CLOB in
>>>>oracle by using iBatis. How do I resulve it? I am using Oracle 10G jdbc
>>>>deiver.
>>>>
>>>>
>>>>org.springframework.jdbc.UncategorizedSQLException:
>>>>(SqlMapClientTemplate): encountered SQLException [
>>>>--- The error occurred in
>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>--- The error occurred while applying a parameter map.
>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>less than 32766 chararacters]; nested exception is
>>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>--- The error occurred in
>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>--- The error occurred while applying a parameter map.
>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>less than 32766 chararacters
>>>>org.springframework.jdbc.UncategorizedSQLException:
>>>>(SqlMapClientTemplate): encountered SQLException [
>>>>--- The error occurred in
>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>--- The error occurred while applying a parameter map.
>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>less than 32766 chararacters]; nested exception is
>>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>--- The error occurred in
>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>--- The error occurred while applying a parameter map.
>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>less than 32766 chararacters
>>>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>--- The error occurred in
>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>>>--- The error occurred while applying a parameter map.
>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>>>--- Cause: java.sql.SQLException: setString can only process strings of
>>>>less than 32766 chararacters
>>>>Caused by: java.sql.SQLException: setString can only process strings of
>>>>less than 32766 chararacters
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:87)
>>>>   at
>>>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
>>>>   at
>>>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
>>>>   at
>>>>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>>   at
>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
>>>>   at
>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
>>>>   at
>>>>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>>   at
>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>>   at
>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>>>   at java.lang.reflect.Method.invoke(Unknown Source)
>>>>   at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>   at junit.framework.TestCase.runBare(TestCase.java:127)
>>>>   at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>   at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>   at junit.framework.TestResult.run(TestResult.java:109)
>>>>   at junit.framework.TestCase.run(TestCase.java:118)
>>>>   at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>   at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>   at
>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>>>>   at
>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>>>>   at
>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
>>>>Caused by: java.sql.SQLException: setString can only process strings of
>>>>less than 32766 chararacters
>>>>   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)
>>>>   at
>>>>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
>>>>   at
>>>>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
>>>>   at
>>>>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
>>>>   at
>>>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
>>>>   ... 23 more
>>>>
>>>>Caused by:
>>>>java.sql.SQLException: setString can only process strings of less than
>>>>32766 chararacters
>>>>   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)
>>>>   at
>>>>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
>>>>   at
>>>>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
>>>>   at
>>>>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
>>>>   at
>>>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
>>>>   at
>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
>>>>   at
>>>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
>>>>   at
>>>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
>>>>   at
>>>>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>>>   at
>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
>>>>   at
>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
>>>>   at
>>>>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>>>   at
>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>>>   at
>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>>>   at java.lang.reflect.Method.invoke(Unknown Source)
>>>>   at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>   at junit.framework.TestCase.runBare(TestCase.java:127)
>>>>   at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>   at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>   at junit.framework.TestResult.run(TestResult.java:109)
>>>>   at junit.framework.TestCase.run(TestCase.java:118)
>>>>   at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>   at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>   at
>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>>>>   at
>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>>>>   at
>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
>>>>
>>>>-Henry
>>>>
>>>>
>>>>
>>>>        
>>>>
>>>
>>>
>>>      
>>>
>
>
>  
>

Re: 32k limitations for clob/blob?

Posted by Brandon Goodin <br...@gmail.com>.
I don't have any idea off the top of my head. This may be a good
opportunity for you to do it with straight JDBC to see what works and
then look at our TypeHandlers to see how they are translating.

Brandon

On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
> No, I didn't. However, I got more details on the errors.
> 1. If I insert into CLOB or LONG as jdbc type with String in java, I got
> the 32K limitation error.
> 
>      [java] size=1551138, 1551138
>      [java] org.springframework.jdbc.UncategorizedSQLException:
> (SqlMapClientTem
> plate): encountered SQLException [
>      [java] --- The error occurred in ibatis_map/AccessDB.xml.
>      [java] --- The error occurred while applying a parameter map.
>      [java] --- Check the insert_long-InlineParameterMap.
>      [java] --- Check the parameter mapping for the 'l' property.
>      [java] --- Cause: java.sql.SQLException: setString can only process
> strings
>  of less than 32766 chararacters]; nested exception is
> com.ibatis.common.jdbc.ex
> ception.NestedSQLException:
>      [java] --- The error occurred in ibatis_map/AccessDB.xml.
>      [java] --- The error occurred while applying a parameter map.
>      [java] --- Check the insert_long-InlineParameterMap.
>      [java] --- Check the parameter mapping for the 'l' property.
>      [java] --- Cause: java.sql.SQLException: setString can only process
> strings
>  of less than 32766 chararacters
> 
> 2. If I insert into CLOB or LONG as jdbc type with byte[] in java, I got
> the following errors:
> 
>      [java] size=1461140, 1461140
>      [java] org.springframework.jdbc.UncategorizedSQLException:
> (SqlMapClientTem
> plate): encountered SQLException [
>      [java] --- The error occurred in ibatis_map/AccessDB.xml.
>      [java] --- The error occurred while applying a parameter map.
>      [java] --- Check the insert_long-InlineParameterMap.
>      [java] --- Check the statement (update failed).
>      [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a LONG
> value o
> nly for insert into a LONG column
>      [java] ]; nested exception is
> com.ibatis.common.jdbc.exception.NestedSQLExc
> eption:
>      [java] --- The error occurred in ibatis_map/AccessDB.xml.
>      [java] --- The error occurred while applying a parameter map.
>      [java] --- Check the insert_long-InlineParameterMap.
>      [java] --- Check the statement (update failed).
>      [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a LONG
> value o
> nly for insert into a LONG column
> 
> Any idea?
> 
> -Henry
> 
> 
> Brandon Goodin wrote:
> 
> >I'm not aware of this limitation. We have run into similar things
> >before with the oracle driver. But, upgrading has always fixed it.
> >Have you attempted a test using straight JDBC?
> >
> >Brandon
> >
> >On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
> >
> >
> >>I got the following errors when I insert a large text into a CLOB in
> >>oracle by using iBatis. How do I resulve it? I am using Oracle 10G jdbc
> >>deiver.
> >>
> >>
> >>org.springframework.jdbc.UncategorizedSQLException:
> >>(SqlMapClientTemplate): encountered SQLException [
> >>--- The error occurred in
> >>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
> >>--- The error occurred while applying a parameter map.
> >>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
> >>--- Check the parameter mapping for the 'INFO_TEXT' property.
> >>--- Cause: java.sql.SQLException: setString can only process strings of
> >>less than 32766 chararacters]; nested exception is
> >>com.ibatis.common.jdbc.exception.NestedSQLException:
> >>--- The error occurred in
> >>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
> >>--- The error occurred while applying a parameter map.
> >>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
> >>--- Check the parameter mapping for the 'INFO_TEXT' property.
> >>--- Cause: java.sql.SQLException: setString can only process strings of
> >>less than 32766 chararacters
> >>org.springframework.jdbc.UncategorizedSQLException:
> >>(SqlMapClientTemplate): encountered SQLException [
> >>--- The error occurred in
> >>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
> >>--- The error occurred while applying a parameter map.
> >>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
> >>--- Check the parameter mapping for the 'INFO_TEXT' property.
> >>--- Cause: java.sql.SQLException: setString can only process strings of
> >>less than 32766 chararacters]; nested exception is
> >>com.ibatis.common.jdbc.exception.NestedSQLException:
> >>--- The error occurred in
> >>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
> >>--- The error occurred while applying a parameter map.
> >>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
> >>--- Check the parameter mapping for the 'INFO_TEXT' property.
> >>--- Cause: java.sql.SQLException: setString can only process strings of
> >>less than 32766 chararacters
> >>com.ibatis.common.jdbc.exception.NestedSQLException:
> >>--- The error occurred in
> >>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
> >>--- The error occurred while applying a parameter map.
> >>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
> >>--- Check the parameter mapping for the 'INFO_TEXT' property.
> >>--- Cause: java.sql.SQLException: setString can only process strings of
> >>less than 32766 chararacters
> >>Caused by: java.sql.SQLException: setString can only process strings of
> >>less than 32766 chararacters
> >>    at
> >>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:87)
> >>    at
> >>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
> >>    at
> >>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
> >>    at
> >>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
> >>    at
> >>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
> >>    at
> >>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
> >>    at
> >>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
> >>    at
> >>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
> >>    at
> >>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
> >>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> >>    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> >>    at java.lang.reflect.Method.invoke(Unknown Source)
> >>    at junit.framework.TestCase.runTest(TestCase.java:154)
> >>    at junit.framework.TestCase.runBare(TestCase.java:127)
> >>    at junit.framework.TestResult$1.protect(TestResult.java:106)
> >>    at junit.framework.TestResult.runProtected(TestResult.java:124)
> >>    at junit.framework.TestResult.run(TestResult.java:109)
> >>    at junit.framework.TestCase.run(TestCase.java:118)
> >>    at junit.framework.TestSuite.runTest(TestSuite.java:208)
> >>    at junit.framework.TestSuite.run(TestSuite.java:203)
> >>    at
> >>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
> >>    at
> >>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
> >>    at
> >>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
> >>Caused by: java.sql.SQLException: setString can only process strings of
> >>less than 32766 chararacters
> >>    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)
> >>    at
> >>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
> >>    at
> >>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
> >>    at
> >>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
> >>    at
> >>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
> >>    at
> >>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
> >>    at
> >>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
> >>    at
> >>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
> >>    at
> >>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
> >>    ... 23 more
> >>
> >>Caused by:
> >>java.sql.SQLException: setString can only process strings of less than
> >>32766 chararacters
> >>    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)
> >>    at
> >>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
> >>    at
> >>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
> >>    at
> >>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
> >>    at
> >>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
> >>    at
> >>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
> >>    at
> >>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
> >>    at
> >>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
> >>    at
> >>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
> >>    at
> >>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
> >>    at
> >>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
> >>    at
> >>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
> >>    at
> >>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
> >>    at
> >>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
> >>    at
> >>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
> >>    at
> >>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
> >>    at
> >>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
> >>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> >>    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> >>    at java.lang.reflect.Method.invoke(Unknown Source)
> >>    at junit.framework.TestCase.runTest(TestCase.java:154)
> >>    at junit.framework.TestCase.runBare(TestCase.java:127)
> >>    at junit.framework.TestResult$1.protect(TestResult.java:106)
> >>    at junit.framework.TestResult.runProtected(TestResult.java:124)
> >>    at junit.framework.TestResult.run(TestResult.java:109)
> >>    at junit.framework.TestCase.run(TestCase.java:118)
> >>    at junit.framework.TestSuite.runTest(TestSuite.java:208)
> >>    at junit.framework.TestSuite.run(TestSuite.java:203)
> >>    at
> >>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
> >>    at
> >>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
> >>    at
> >>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
> >>
> >>-Henry
> >>
> >>
> >>
> >
> >
> >
> >
>

Re: 32k limitations for clob/blob?

Posted by Henry Lu <zh...@umich.edu>.
No, I didn't. However, I got more details on the errors.
1. If I insert into CLOB or LONG as jdbc type with String in java, I got 
the 32K limitation error.

     [java] size=1551138, 1551138
     [java] org.springframework.jdbc.UncategorizedSQLException: 
(SqlMapClientTem
plate): encountered SQLException [
     [java] --- The error occurred in ibatis_map/AccessDB.xml.
     [java] --- The error occurred while applying a parameter map.
     [java] --- Check the insert_long-InlineParameterMap.
     [java] --- Check the parameter mapping for the 'l' property.
     [java] --- Cause: java.sql.SQLException: setString can only process 
strings
 of less than 32766 chararacters]; nested exception is 
com.ibatis.common.jdbc.ex
ception.NestedSQLException:
     [java] --- The error occurred in ibatis_map/AccessDB.xml.
     [java] --- The error occurred while applying a parameter map.
     [java] --- Check the insert_long-InlineParameterMap.
     [java] --- Check the parameter mapping for the 'l' property.
     [java] --- Cause: java.sql.SQLException: setString can only process 
strings
 of less than 32766 chararacters

2. If I insert into CLOB or LONG as jdbc type with byte[] in java, I got 
the following errors:

     [java] size=1461140, 1461140
     [java] org.springframework.jdbc.UncategorizedSQLException: 
(SqlMapClientTem
plate): encountered SQLException [
     [java] --- The error occurred in ibatis_map/AccessDB.xml.
     [java] --- The error occurred while applying a parameter map.
     [java] --- Check the insert_long-InlineParameterMap.
     [java] --- Check the statement (update failed).
     [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a LONG 
value o
nly for insert into a LONG column
     [java] ]; nested exception is 
com.ibatis.common.jdbc.exception.NestedSQLExc
eption:
     [java] --- The error occurred in ibatis_map/AccessDB.xml.
     [java] --- The error occurred while applying a parameter map.
     [java] --- Check the insert_long-InlineParameterMap.
     [java] --- Check the statement (update failed).
     [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a LONG 
value o
nly for insert into a LONG column

Any idea?

-Henry


Brandon Goodin wrote:

>I'm not aware of this limitation. We have run into similar things
>before with the oracle driver. But, upgrading has always fixed it.
>Have you attempted a test using straight JDBC?
>
>Brandon
>
>On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
>  
>
>>I got the following errors when I insert a large text into a CLOB in
>>oracle by using iBatis. How do I resulve it? I am using Oracle 10G jdbc
>>deiver.
>>
>>
>>org.springframework.jdbc.UncategorizedSQLException:
>>(SqlMapClientTemplate): encountered SQLException [
>>--- The error occurred in
>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>--- The error occurred while applying a parameter map.
>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>--- Cause: java.sql.SQLException: setString can only process strings of
>>less than 32766 chararacters]; nested exception is
>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>--- The error occurred in
>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>--- The error occurred while applying a parameter map.
>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>--- Cause: java.sql.SQLException: setString can only process strings of
>>less than 32766 chararacters
>>org.springframework.jdbc.UncategorizedSQLException:
>>(SqlMapClientTemplate): encountered SQLException [
>>--- The error occurred in
>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>--- The error occurred while applying a parameter map.
>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>--- Cause: java.sql.SQLException: setString can only process strings of
>>less than 32766 chararacters]; nested exception is
>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>--- The error occurred in
>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>--- The error occurred while applying a parameter map.
>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>--- Cause: java.sql.SQLException: setString can only process strings of
>>less than 32766 chararacters
>>com.ibatis.common.jdbc.exception.NestedSQLException:
>>--- The error occurred in
>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
>>--- The error occurred while applying a parameter map.
>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
>>--- Check the parameter mapping for the 'INFO_TEXT' property.
>>--- Cause: java.sql.SQLException: setString can only process strings of
>>less than 32766 chararacters
>>Caused by: java.sql.SQLException: setString can only process strings of
>>less than 32766 chararacters
>>    at
>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:87)
>>    at
>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
>>    at
>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
>>    at
>>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>    at
>>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
>>    at
>>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
>>    at
>>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>    at
>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>    at
>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>    at java.lang.reflect.Method.invoke(Unknown Source)
>>    at junit.framework.TestCase.runTest(TestCase.java:154)
>>    at junit.framework.TestCase.runBare(TestCase.java:127)
>>    at junit.framework.TestResult$1.protect(TestResult.java:106)
>>    at junit.framework.TestResult.runProtected(TestResult.java:124)
>>    at junit.framework.TestResult.run(TestResult.java:109)
>>    at junit.framework.TestCase.run(TestCase.java:118)
>>    at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>    at junit.framework.TestSuite.run(TestSuite.java:203)
>>    at
>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>>    at
>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>>    at
>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
>>Caused by: java.sql.SQLException: setString can only process strings of
>>less than 32766 chararacters
>>    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)
>>    at
>>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
>>    at
>>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
>>    at
>>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
>>    at
>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
>>    at
>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
>>    at
>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
>>    at
>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
>>    at
>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
>>    ... 23 more
>>
>>Caused by:
>>java.sql.SQLException: setString can only process strings of less than
>>32766 chararacters
>>    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)
>>    at
>>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
>>    at
>>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
>>    at
>>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
>>    at
>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
>>    at
>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
>>    at
>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
>>    at
>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
>>    at
>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
>>    at
>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
>>    at
>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
>>    at
>>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>>    at
>>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
>>    at
>>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
>>    at
>>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>>    at
>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>>    at
>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>    at java.lang.reflect.Method.invoke(Unknown Source)
>>    at junit.framework.TestCase.runTest(TestCase.java:154)
>>    at junit.framework.TestCase.runBare(TestCase.java:127)
>>    at junit.framework.TestResult$1.protect(TestResult.java:106)
>>    at junit.framework.TestResult.runProtected(TestResult.java:124)
>>    at junit.framework.TestResult.run(TestResult.java:109)
>>    at junit.framework.TestCase.run(TestCase.java:118)
>>    at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>    at junit.framework.TestSuite.run(TestSuite.java:203)
>>    at
>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>>    at
>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>>    at
>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
>>
>>-Henry
>>
>>    
>>
>
>
>  
>

Re: 32k limitations for clob/blob?

Posted by Brandon Goodin <br...@gmail.com>.
I'm not aware of this limitation. We have run into similar things
before with the oracle driver. But, upgrading has always fixed it.
Have you attempted a test using straight JDBC?

Brandon

On 6/9/05, Henry Lu <zh...@umich.edu> wrote:
> I got the following errors when I insert a large text into a CLOB in
> oracle by using iBatis. How do I resulve it? I am using Oracle 10G jdbc
> deiver.
> 
> 
> org.springframework.jdbc.UncategorizedSQLException:
> (SqlMapClientTemplate): encountered SQLException [
> --- The error occurred in
> edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
> --- The error occurred while applying a parameter map.
> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
> --- Check the parameter mapping for the 'INFO_TEXT' property.
> --- Cause: java.sql.SQLException: setString can only process strings of
> less than 32766 chararacters]; nested exception is
> com.ibatis.common.jdbc.exception.NestedSQLException:
> --- The error occurred in
> edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
> --- The error occurred while applying a parameter map.
> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
> --- Check the parameter mapping for the 'INFO_TEXT' property.
> --- Cause: java.sql.SQLException: setString can only process strings of
> less than 32766 chararacters
> org.springframework.jdbc.UncategorizedSQLException:
> (SqlMapClientTemplate): encountered SQLException [
> --- The error occurred in
> edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
> --- The error occurred while applying a parameter map.
> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
> --- Check the parameter mapping for the 'INFO_TEXT' property.
> --- Cause: java.sql.SQLException: setString can only process strings of
> less than 32766 chararacters]; nested exception is
> com.ibatis.common.jdbc.exception.NestedSQLException:
> --- The error occurred in
> edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
> --- The error occurred while applying a parameter map.
> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
> --- Check the parameter mapping for the 'INFO_TEXT' property.
> --- Cause: java.sql.SQLException: setString can only process strings of
> less than 32766 chararacters
> com.ibatis.common.jdbc.exception.NestedSQLException:
> --- The error occurred in
> edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml.
> --- The error occurred while applying a parameter map.
> --- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map.
> --- Check the parameter mapping for the 'INFO_TEXT' property.
> --- Cause: java.sql.SQLException: setString can only process strings of
> less than 32766 chararacters
> Caused by: java.sql.SQLException: setString can only process strings of
> less than 32766 chararacters
>     at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:87)
>     at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
>     at
> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
>     at
> org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>     at
> org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
>     at
> org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
>     at
> edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>     at
> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>     at
> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>     at java.lang.reflect.Method.invoke(Unknown Source)
>     at junit.framework.TestCase.runTest(TestCase.java:154)
>     at junit.framework.TestCase.runBare(TestCase.java:127)
>     at junit.framework.TestResult$1.protect(TestResult.java:106)
>     at junit.framework.TestResult.runProtected(TestResult.java:124)
>     at junit.framework.TestResult.run(TestResult.java:109)
>     at junit.framework.TestCase.run(TestCase.java:118)
>     at junit.framework.TestSuite.runTest(TestSuite.java:208)
>     at junit.framework.TestSuite.run(TestSuite.java:203)
>     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
> Caused by: java.sql.SQLException: setString can only process strings of
> less than 32766 chararacters
>     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)
>     at
> com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
>     at
> com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
>     at
> com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
>     at
> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
>     at
> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
>     at
> com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
>     at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
>     at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
>     ... 23 more
> 
> Caused by:
> java.sql.SQLException: setString can only process strings of less than
> 32766 chararacters
>     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)
>     at
> com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(ParameterSetterImpl.java:139)
>     at
> com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(ClobTypeHandlerCallback.java:45)
>     at
> com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomTypeHandler.java:46)
>     at
> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
>     at
> com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
>     at
> com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80)
>     at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:196)
>     at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:74)
>     at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
>     at
> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:89)
>     at
> org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapClient(SqlMapClientTemplate.java:282)
>     at
> org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:140)
>     at
> org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:280)
>     at
> edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.insertTgs_info_trainee(Tgs_info_traineeDaoSql.java:67)
>     at
> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100)
>     at
> unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestCase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>     at java.lang.reflect.Method.invoke(Unknown Source)
>     at junit.framework.TestCase.runTest(TestCase.java:154)
>     at junit.framework.TestCase.runBare(TestCase.java:127)
>     at junit.framework.TestResult$1.protect(TestResult.java:106)
>     at junit.framework.TestResult.runProtected(TestResult.java:124)
>     at junit.framework.TestResult.run(TestResult.java:109)
>     at junit.framework.TestCase.run(TestCase.java:118)
>     at junit.framework.TestSuite.runTest(TestSuite.java:208)
>     at junit.framework.TestSuite.run(TestSuite.java:203)
>     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
> 
> -Henry
>