У меня есть объект, который сохраняется в схеме Oracle.При вставке БД триггер генерирует идентификатор объекта, используя последовательность БД.Использование триггера обязательно , поскольку он также обновляет другую таблицу рядом с последовательностью генерации идентификаторов (вид таблицы журналов), что важно для устаревших компонентов.
Как настроить генератор идентификаторов Hibernate в моемсопоставление сущностей?
Оглядываясь на похожие вопросы Stackoverflow, я нашел несколько решений, которые не подходят для моего случая:
- Использование последовательности напрямую:
<generator class="sequence">...</generator>
.Это невозможно, поскольку остальная часть кода триггера не будет выполнена - с использованием
<generator class="select">...</generator>
, что означает, что после вставки Hibernate выбирает объект, используя другое уникальное свойство (согласно руководству Hibernate-3.3 5.1.4.6.),Это также невозможно здесь, поскольку нет другого уникального столбца и использование набора свойств не поддерживается. - Использование
<generator class="assigned">...</generator>
и установка поддельного идентификатора перед вызовом save()
.Этот идентификатор будет игнорироваться триггером БД, и результирующая строка БД будет иметь правильный идентификатор.Тем не менее, мой экземпляр Java не будет иметь, и это решение выглядит безобразно, поскольку он делает предположения о реализации триггера.
Есть ли хорошее решение для этой проблемы?