Использование столбца Oracle XMLType в спящем режиме

Мне нужно сопоставить столбец Oracle XMLType с классом сущностей гибернации. Существует работающее (и, я думаю, хорошо -известное )решение, включающее реализацию UserType; однако я не могу его использовать, потому что требуется импорт парсеров Oracle xml, что, в свою очередь, вызывает много проблем.
Я согласен с доступом к значению столбца xml в виде строки и оставляю преобразование коду, который манипулирует сущностью, но я не могу найти способ прочитать значение и записать его в базу данных. Что я пробовал до сих пор:

  1. Объявление свойства в классе сущностей как String. Результат -значение читается как null. Если свойство просто Serializable, я получаю исключение «невозможно десериализовать».
  2. Использование аннотации @Formula(CAST xmlCol as varchar2(1000)). Результат -значение не сохранено
  3. Используя @Loaderи помещая CASTв SELECT. Это была самая многообещающая попытка -значение было успешно прочитано и сохранено, но когда дело доходит до загрузки набора сущностей, содержащих столбец xml, я получаюnull(Hibernate не использует sql в @Loader, если базовая таблица LEFT JOINed ).

Другой подход, который, по моему мнению, должен работать, состоит в том, чтобы иметь столбец xml какString(для записи )плюс фиктивное поле для чтения с помощью @Formula; однако для меня это выглядит как грязный взлом, и я бы предпочел не делать этого, если у меня нет выбора.

Наконец, самое последнее, что я могу сделать, это изменить схему БД (и более 1 параметра, например, просмотр + триггеры, изменение типа данных столбца ), но это тоже не лучший вариант для меня.

Интересно, я что-то пропустил или может есть способ заставить (3 )работать?

28
задан a1ex07 20 July 2012 в 11:45
поделиться