Как использовать Oracle XMLTYPE в HibernateJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как использовать Oracle XMLTYPE в Hibernate

Сообщение Anonymous »

Один из столбцов имеет тип XMLTYPE в базе данных Oracle.
В моем приложении я хочу сохранить данные и использовать Hibernate.

Я сделал следующее для сопоставления XMLTYPE в спящем режиме.
  • Определите пользовательский тип, реализующий UserType
  • Реализация пользовательского типа основана на ссылке на блог - http://community.jboss.org/wiki/Mapping ... toDocument
  • но мы не используем пул соединений 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");
}
}
Осталась без понятия...

Подробнее здесь: https://stackoverflow.com/questions/381 ... -hibernate
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»