Я ввел пользовательский генератор идентификаторов в hbm.xml. Но иногда для некоторых случаев использования мне нужно сохранить явные идентификаторы в моей таблице, где я не хочу, чтобы пользовательский генератор Id запускался. Есть ли способ сделать это? Или есть ли возможность иметь несколько генераторов пользовательских идентификаторов и переключаться между ними во время выполнения?Использование нескольких генераторов id в спящем режиме
ответ
Глядя на Javadoc из IdentifierGenerator.generate(SessionImplementor session, Object object)
:
Параметры:
сессия -
объект - предприятие или верхнего уровня коллекции, для которых идентификатор генерируется
Возвращает:
в новый идентификатор
Возможно, решение может быть проверено для аннотированного поля @Id
и выглядит, если поле было оценено вручную, или пусть ваш объект домена реализует собственный интерфейс и записывает класс экстрактора, чтобы каким-то образом извлечь информацию из сохраняющегося объекта (отражение, ручной письменный код или другое решение)
Если вы можете реализовать логику самостоятельно, когда хотите использовать генератор, и когда вы хотите пропустить его, вы должны сделать это, используя аннотацию @PrePersist. Смотрите следующую запись:
Hibernate: Bypass generated ID in some case
Надеется, что это помогает.
Sarah
- 1. @Id в спящем режиме
- 2. Наследие id в спящем режиме
- 3. Использование JTable в спящем режиме
- 4. Использование LIKE% в спящем режиме
- 5. Использование инверсного значения true в спящем режиме
- 6. Исключения: использование внутренних соединения в спящем режиме
- 7. присоединяется в спящем режиме
- 8. Повторное использование параметра в спящем режиме Restrictions.sqlRestriction?
- 9. автообъединения в спящем режиме
- 10. ColumnTransformer в спящем режиме
- 11. @Parameter аннотации в спящем режиме
- 12. Сохранение в спящем режиме
- 13. Диалект в спящем режиме
- 14. SessionFactory в спящем режиме
- 15. count (*) в спящем режиме?
- 16. clientidentifier в спящем режиме
- 17. Наследование в спящем режиме
- 18. ошибка в спящем режиме?
- 19. ClassCastException в спящем режиме
- 20. MappingNotFoundException в спящем режиме
- 21. данных в спящем режиме
- 22. Группировка в спящем режиме
- 23. ленивая инициализация в спящем режиме
- 24. Извлечение данных из нескольких таблиц в спящем режиме
- 25. Использование в режиме реального времени двухсторонних генераторов в javascript
- 26. Многоступенчатая транзакция в спящем режиме
- 27. ID объекта со всеми его переменными в спящем режиме
- 28. ID от родителя до ребенка в спящем режиме
- 29. Столбец Id с предопределенным префиксом в спящем режиме
- 30. Необходим ли класс генератора для ID-тега в спящем режиме?
Вы пробовали простой способ? ... установить идентификатор вручную до его сохранения? –
Я думаю, что, хотя я вручную установил его, в конце Hibernate вызовет пользовательский генератор идентификаторов, и он перезапишет заданный вручную идентификатор. – asthiwanka