Как эффективно определить автоматически сгенерированный идентификатор для нового объекта при использовании JPA? - PullRequest
3 голосов
/ 22 апреля 2010

У меня есть атрибут, помеченный @Id. Идентификатор будет сгенерирован автоматически при сохранении объекта. Это означает, что значение ID не определено до того, как я сохраню объект. После сохранения он имеет идентификатор (в базе данных), но, к сожалению, поле остается пустым, пока я не перезагружаю его из БД. Есть ли простой способ узнать сгенерированный идентификатор? Или лучше: настроить что будет записано в поле?

Заранее спасибо

1 Ответ

6 голосов
/ 22 апреля 2010

Идентификатор присваивается после сброса.Предполагая, что объект Foo имеет атрибут id, аннотированный стандартными аннотациями @Id @GeneratedValue, работает следующий код:

Foo foo = new Foo();
//...
em.persist(foo);
em.flush();
assert foo.getId() != null;
...