Как разрешить исключение «Незаконное преобразование» при вставке в столбец XML? - PullRequest
4 голосов
/ 24 сентября 2010

У меня есть таблица со столбцом типа XML.Когда я вставляю запись в эту таблицу из сервлета, работающего в WebSphere в Windows, вставка завершается успешно.Однако когда я запускаю точно такой же код в WebSphere в AIX, я получаю следующее исключение:

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

Я использую WebSphere 6.1 для базы данных DB2 версии 9, z / OS.1005 * Из-за разницы в платформе это выглядит как проблема кодирования.Но кто знает.Любой совет?

Ответы [ 3 ]

1 голос
/ 06 октября 2010

Это оказалось «проблемой» с конфигурацией драйвера JDBC.

Другое приложение, работающее в той же JVM, было настроено для использования драйвера JDBC v8.Мой был настроен на использование драйвера JDBC v9.Но из-за того, как работает загрузка классов, первая в classpath загружалась для обоих (именно так случилось, что это был драйвер v8, который не работал для моего приложения.)оба приложения используют драйвер v9 (что было нормально, потому что он предположительно полностью обратно совместим.)

0 голосов
/ 29 ноября 2016

Для меня я передаю дату в строковый столбец, как показано ниже

setDate( 5, new java.sql.Date( this.prevDate.getTime() ) );

, когда меняю ее на:

setString( 5, "20150404" );

У меня нет проблем с драйверами, как указано вышеответ

Надеюсь, это поможет тому, у кого возникла подобная проблема

0 голосов
/ 24 сентября 2010

Просто предположение, поскольку я не работаю с DB2, но столбец BLOB, вероятно, требует, чтобы входные данные были байтовым массивом, а не строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...