Estoy buscando una forma inteligente y fácil de leer para obtener la identificación de una entidad persistente usando JPA
. La identificación es Integer
.Cómo obtener Id de la última entidad persistente usando JPA
Se podría pensar en las siguientes soluciones:
- Sin utilizar
GeneratedValue
estrategia. Esto requiere buscar una identificación gratis antes de persistir, luego ponerla en la entidad para ser persistente: engorrosa, pero funciona. - Con una estrategia
GeneratedValue
. El proveedor de persistencia se ocupará de la generación de id. Esto parece más inteligente, pero ¿cómo obtener la identificación?
Véase más abajo para solución de 2
MyEntity en = new MyEntity();
en.setName("My name");
em.persist(en);
System.out.println(en.getId());
Esto imprime identidad nulo!
¿Alguna sugerencia? Estoy usando MySql, EclipseLink, pero necesito una solución portátil.
@JB Nizet, ¿cómo puedo obtener una identificación antes de persistir '() 'método? Lo estoy esperando porque me gustaría cambiar el formato de identificación personalizado? – CycDemo
@CycDemo: no puede, a menos que lo genere usted mismo. –
@JBNizet ¿Dónde está la fuente de la declaración "persistir no está garantizado para generar el ID"? En la especificación JPS (JSR), leí las siguientes dos declaraciones (Capítulo 3.2): - Una instancia de entidad administrada es una instancia con una identidad persistente - La semántica de la operación persist, aplicada a una entidad X es la siguiente: X es una nueva entidad, se vuelve administrada. ... * Si interpreto esa palabra por palabra, diría que la especificación exige que el Id esté configurado después de llamar a persist() *. Ese es también el comportamiento de Hibernate. – jbandi