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

Jar*_*red 5 java db2 websphere hibernate

我有一个表,其中有一列 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
Run Code Online (Sandbox Code Playgroud)

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

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

Jar*_*red 1

事实证明这是 JDBC 驱动程序配置的“问题”。

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

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