Мне нужно сопоставить столбец Oracle XMLType с классом сущностей гибернации. Существует работающее (и, я думаю, хорошо -известное )решение, включающее реализацию UserType
; однако я не могу его использовать, потому что требуется импорт парсеров Oracle xml, что, в свою очередь, вызывает много проблем.
Я согласен с доступом к значению столбца xml в виде строки и оставляю преобразование коду, который манипулирует сущностью, но я не могу найти способ прочитать значение и записать его в базу данных. Что я пробовал до сих пор:
String
. Результат -значение читается как null
. Если свойство просто Serializable
, я получаю исключение «невозможно десериализовать».@Formula
(CAST xmlCol as varchar2(1000)
). Результат -значение не сохранено@Loader
и помещая CAST
в SELECT
. Это была самая многообещающая попытка -значение было успешно прочитано и сохранено, но когда дело доходит до загрузки набора сущностей, содержащих столбец xml, я получаюnull
(Hibernate не использует sql в @Loader
, если базовая таблица LEFT JOIN
ed ).Другой подход, который, по моему мнению, должен работать, состоит в том, чтобы иметь столбец xml какString
(для записи )плюс фиктивное поле для чтения с помощью @Formula
; однако для меня это выглядит как грязный взлом, и я бы предпочел не делать этого, если у меня нет выбора.
Наконец, самое последнее, что я могу сделать, это изменить схему БД (и более 1 параметра, например, просмотр + триггеры, изменение типа данных столбца ), но это тоже не лучший вариант для меня.
Интересно, я что-то пропустил или может есть способ заставить (3 )работать?