Могу ли я использовать @GenericGenerator самостоятельно без @GeneratedValue? - PullRequest
0 голосов
/ 03 апреля 2019

Изучая Java, я пока не вижу четкого ответа на этот вопрос.Любые разъяснения приветствуются.

@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@JsonExclude
private String id;

Q1: могу ли я использовать только GenericGenerator?

Q2: если я передаю "id" в моем объекте, будет ли @GeneratedValue генерировать новый идентификатора перезаписать пройденное в одном?Если так, как сохранить существующий идентификатор, не вызывайте @GeneratedValue?

1 Ответ

1 голос
/ 03 апреля 2019

Q1: я могу использовать только GenericGenerator?

Не совсем.Это берет имя генератора, определенного @GeneratedValue.

Q2: если я передаю в моем объекте "id", будет ли @GeneratedValue генерировать новый идентификатор и перезаписывать переданный в одном?Если так, как сохранить существующий идентификатор, не вызывайте @GeneratedValue?

Это зависит от базовой реализации.Обычно, если объект уже имеет установленный идентификатор, он не генерируется снова.Однако вам не следует связываться с идентификаторами самостоятельно, и вы должны позволить EntityManager управлять ими.

Когда вы сохраняете новую сущность, у нее не будет установлен id, поэтому генератор будет создавать новую при сохранении сущности.Когда вы запрашиваете сущность из вашего хранилища данных, она заполняется средой персистентности (в данном случае hibernate).Он также будет отслеживать этот экземпляр для любых будущих обновлений объекта, которые вы, возможно, захотите сохранить обратно.

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