Подтвердить что ты не робот

Bypass GeneratedValue в спящем режиме

Можно ли обойти @GeneratedValue для идентификатора в Hibernate, мы имеем случай, когда большую часть времени мы хотим, чтобы ID был установлен с помощью GeneratedValue, но в некоторых случаях хотел бы установить идентификатор вручную.

Можно ли это сделать?

4b9b3361

Ответ 1

Я знаю, что вы можете сделать это в спецификации JPA, так что вы должны иметь возможность в Hibernate (используя JPA + аннотации).

Если вы просто заполните поле идентификатора новой постоянной модели, которую вы создаете, тогда, когда вы "объедините" эту модель в EntityManager, она будет использовать установленный вами идентификатор.

У этого есть разветвления. Вы только что использовали этот идентификатор, но последовательность, указанная аннотацией GeneratedValue, не знает этого. Если вы не указали ununsed ID, который МЕНЬШЕ, чем текущее значение последовательности, вы столкнетесь с проблемой, как только последовательность дойдет до значения, которое вы только что использовали.

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