Один из столбцов имеет тип XMLTYPE в базе данных Oracle.
В моем приложении я хочу сохранить данные и использовать Hibernate.
Я сделал следующее для отображения XMLTYPE в спящем режиме
Определить пользовательский тип, реализующий UserType
Реализация пользовательского типа основана на ссылке в блоге - http://community.jboss.org/wiki/MappingOracleXmlTypetoDocument
но мы не используем пул соединений C3p0, а вместо этого мы используем DBCP
У меня возникла проблема при создании XMLType в пользовательском типе пользователя
XMLType.createXML(st.getConnection(),HibernateXMLType.domToString((Document) value));
где st - подготовленное состояние, переданное методу.
Объект подключения , возвращаемый функцией st.getConnection (), имеет тип org.apache.commons.dbcp.PoolableConnection
Но метод createXML ожидает объект подключения только типа oracle.jdbc.OracleConnection
Я также пытался получить getInnermostDelegate, но это также не работает.
Методы создания XMLTYPE находятся в прилагаемом jar xdb.jar - будут ли какие-либо изменения в зависимости от включенных версий?
Спасибо
+++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++
Получил объект SQLConnection, используя приведенный ниже код -
SimpleNativeJdbcExtractor extractor = new SimpleNativeJdbcExtractor();
PoolableConnection poolableConnection = (PoolableConnection) extractor
.getNativeConnection(st.getConnection());
Connection sqlConnection = poolableConnection.getInnermostDelegate();
Теперь сообщение об ошибке: java.sql.SQLException: неверный тип столбца
Ниже приведен переопределенный метод
public void nullSafeSet(PreparedStatement st, Object value, int index)
throws HibernateException, SQLException {
SimpleNativeJdbcExtractor extractor = new SimpleNativeJdbcExtractor();
PoolableConnection poolableConnection = (PoolableConnection) extractor
.getNativeConnection(st.getConnection());
Connection sqlConnection = poolableConnection.getInnermostDelegate();
try {
XMLType xmlType = null;
if (value != null) {
xmlType.createXML(sqlConnection, HibernateXMLType
.domToString((Document) value));
}
st.setObject(index, xmlType);
} catch (Exception e) {
e.printStackTrace();
throw new SQLException(
"Could not convert Document to String for storage");
}
}
Осталось без понятия ...