2013-09-06 2 views
-1

Я ввел пользовательский генератор идентификаторов в hbm.xml. Но иногда для некоторых случаев использования мне нужно сохранить явные идентификаторы в моей таблице, где я не хочу, чтобы пользовательский генератор Id запускался. Есть ли способ сделать это? Или есть ли возможность иметь несколько генераторов пользовательских идентификаторов и переключаться между ними во время выполнения?Использование нескольких генераторов id в спящем режиме

+0

Вы пробовали простой способ? ... установить идентификатор вручную до его сохранения? –

+0

Я думаю, что, хотя я вручную установил его, в конце Hibernate вызовет пользовательский генератор идентификаторов, и он перезапишет заданный вручную идентификатор. – asthiwanka

ответ

1

Глядя на Javadoc из IdentifierGenerator.generate(SessionImplementor session, Object object):

Параметры:
сессия -
объект - предприятие или верхнего уровня коллекции, для которых идентификатор генерируется
Возвращает:
в новый идентификатор

Возможно, решение может быть проверено для аннотированного поля @Id и выглядит, если поле было оценено вручную, или пусть ваш объект домена реализует собственный интерфейс и записывает класс экстрактора, чтобы каким-то образом извлечь информацию из сохраняющегося объекта (отражение, ручной письменный код или другое решение)

1

Если вы можете реализовать логику самостоятельно, когда хотите использовать генератор, и когда вы хотите пропустить его, вы должны сделать это, используя аннотацию @PrePersist. Смотрите следующую запись:

Hibernate: Bypass generated ID in some case

Надеется, что это помогает.

Sarah

Смежные вопросы