Как получить идентификатор последнего сохраняемого объекта с помощью JPA

Я ищу умный и легко читаемый способ получить идентификатор сохраняемой сущности, используя JPA. Идентификатор представляет собой Integer.

Можно подумать о следующих решениях:

  1. Без использования стратегии GeneratedValue. Это требует поиска бесплатного идентификатора перед сохранением, а затем помещения его в сохраняемую сущность: громоздко, но работает.
  2. Со стратегией GeneratedValue. Поставщик постоянства позаботится о генерации идентификатора. Это выглядит умнее, но как получить идентификатор?

Решение 2 см. ниже.

MyEntity en = new MyEntity();
en.setName("My name");
em.persist(en);
System.out.println(en.getId());

Это печатает нулевой идентификатор!

Есть предложения? Я использую MySql, EclipseLink, но мне нужно портативное решение.

27
задан perissf 10 March 2012 в 19:33
поделиться