java – 如何在插入XML列时解决“非法转换”异常?

我有一个表格,其中包含XML类型的列.当我在Windows上的WebSphere中运行的servlet中将记录插入此表时,插入成功.但是,当我在AIX上的WebSphere中运行完全相同的代码时,我得到以下异常:

com.ibm.db2.jcc.c.SqlException: Illegal Conversion: Can not convert from "java.lang.String" to "java.sql.Blob"
        at com.ibm.db2.jcc.c.r.a(r.java:695)
        at com.ibm.db2.jcc.c.uf.b(uf.java:927)
        at com.ibm.db2.jcc.c.uf.setString(uf.java:910)
        at com.ibm.ws.rsadapter.spi.InternalGenericDataStoreHelper.psSetString(InternalGenericDataStoreHelper.java:554)
        at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.setString(WSJdbcPreparedStatement.java:1662)
        at org.hibernate.type.StringType.set(StringType.java:49)
        at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:154)
        at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:131)
        at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2015)
        at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2261)
        ... 33 more

我正在针对DB2版本9,z / OS数据库运行WebSphere 6.1.

由于平台差异,这感觉很像编码问题.但谁知道呢.有什么建议?

解决方法:

结果证明这是JDBC驱动程序配置的“问题”.

在同一JVM中运行的另一个应用程序配置为使用v8 JDBC驱动程序.我的配置是使用v9 JDBC驱动程序.但是由于类加载的工作方式,类路径中的第一个加载了两个(这恰好是v8驱动程序,它对我的​​应用程序不起作用.)

解决方法是将两个应用程序切换为使用v9驱动程序(这很好,因为它应该完全向后兼容.)

上一篇:mysql – 根据列的计数进行分组的SQL


下一篇:java – 应用程序是否可以更改WebSphere和DB2组合上每个单独事务的隔离级别