java - stored - Cómo obtener Id de la última entidad persistente usando JPA
native query hibernate (1)
persistir no garantiza la generación de la ID. Se garantiza que la ID se genere solo en tiempo de descarga. Entonces, si realmente necesita la identificación antes de que la transacción finalice (y el administrador de la entidad se vacía), llame a flush () explícitamente para obtener la ID:
MyEntity en = new MyEntity();
en.setName("My name");
em.persist(en);
em.flush();
System.out.println(en.getId());
Estoy buscando una forma inteligente y fácil de leer para obtener la identificación de una entidad persistente utilizando JPA
. La identificación es un Integer
.
Uno podría pensar en las siguientes soluciones:
- Sin usar la estrategia
GeneratedValue
. 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?
Vea a continuación la solución 2
MyEntity en = new MyEntity();
en.setName("My name");
em.persist(en);
System.out.println(en.getId());
¡Esto imprime una identificación nula!
¿Alguna sugerencia? Estoy usando MySql, EclipseLink, pero necesito una solución portátil.