Q1: я могу использовать только GenericGenerator?
Не совсем.Это берет имя генератора, определенного @GeneratedValue
.
Q2: если я передаю в моем объекте "id", будет ли @GeneratedValue генерировать новый идентификатор и перезаписывать переданный в одном?Если так, как сохранить существующий идентификатор, не вызывайте @GeneratedValue?
Это зависит от базовой реализации.Обычно, если объект уже имеет установленный идентификатор, он не генерируется снова.Однако вам не следует связываться с идентификаторами самостоятельно, и вы должны позволить EntityManager
управлять ими.
Когда вы сохраняете новую сущность, у нее не будет установлен id
, поэтому генератор будет создавать новую при сохранении сущности.Когда вы запрашиваете сущность из вашего хранилища данных, она заполняется средой персистентности (в данном случае hibernate).Он также будет отслеживать этот экземпляр для любых будущих обновлений объекта, которые вы, возможно, захотите сохранить обратно.