2015-10-26 7 views
0

Есть ли способ сообщить Hibernate сначала проверить, может ли текущий первичный ключ, сгенерированный генератором таблицы, использоваться или устаревать?Спящий режим: генератор таблицы обновлений

У меня есть приложение, которое использует hibernate для создания новых записей в нескольких таблицах в моей базе данных, но иногда эти сгенерированные значения устарели и уже используются. Это происходит потому, что эта база данных используется довольно многими приложениями и сценариями, а некоторые из них используют стратегию «выбрать MAX (ID) +1« -Кейгенерация »». На самом деле не вариант изменения всех других компонентов для использования генератора таблиц (хотя это и решит проблему), поэтому я должен убедиться, что значения, которые я получаю от генератора таблицы, действительно полезны.

Есть ли способ сообщить Hibernate проверить достоверность сгенерированных значений, прежде чем он попытается вставить новую запись в базу данных (и выбросить исключение ConstraintViolationException)? Или, альтернативно, есть способ вручную обновить таблицы генераторов до того, как спящий режим использует их для генерации новых идентификаторов?

Очевидный способ будет работать родной запрос как UPDATE pk_generator SET value=(SELECT MAX(ID)+1 from members) WHERE column='members'

ответ

0

При сохранении объекта с saveOrUpdate() полем объектов идентификатора будет обновляться с автогенерируемой идентификатор, если это было создать операцию. Чтобы он никогда не конфликтует с id, который уже сгенерирован и используется.

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