Обход сгенерированного значения в Hibernate - PullRequest
11 голосов
/ 18 сентября 2008

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

Возможно ли это сделать?

1 Ответ

5 голосов
/ 18 сентября 2008

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...