У меня есть устаревшее приложение, которое использует hibernate для отображения объектов в базу данных. Для этого он использует XML-файл Hibernate Mapping. Класс java содержит два свойства abc и def, которые реализуют Java-сериализуемый. Отображение определяется следующим образом:
<property name="abc" column="ABC" type="serializable" length="32672"/>
<property name="def" column="DEF" type="serializable" length="32672"/>
Когда я пытаюсь установить это с помощью oracle, я получаю неприятную ошибку "ORA-01754: таблица может содержать только один столбец типа LONG", который по существу жалуется на создание двух столбцов "long raw" в одной таблице. Oracle не любит это. После прочтения этой проблемы рекомендуется использовать большие двоичные объекты вместо типов long raw.
У меня вопрос, как я могу выразить в файле отображения hibernate, чтобы использовать сериализуемый тип, сопоставленный в столбце BLOB-объектов? Я бы подумал, что будет тип serializable_blob, но, похоже, его нет.
Я знаю, что это возможно с аннотациями JPA с использованием @Basic и @Lob. Это также должно быть возможно при использовании файла отображения hibernate. Как это можно сделать в файле отображения гибернации?
Обновление:
Следующие команды не работают как сериализуемые произведения:
- type = binary - этот ожидает байт []. Не работает для сериализуемых классов. Дает ClassCastException.
- type = blob - - Этот объект ожидает java.sql.Blob. Не работает для сериализуемых классов. Дает ClassCastException.
- type = materialized_blob - - Этот ожидает байт []. Не работает для сериализуемых классов. Дает ClassCastException.