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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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
















Reply via email to