I am looking a smart and easily readable way to get the id of a persisted entity using JPA
. The id is an Integer
.
One could think of the following solutions:
GeneratedValue
strategy. This requires looking for a free id before persisting, then putting it into the entity to be persisted: cumbersome, but works.GeneratedValue
strategy. The persistence provider will take care of the id generation. This looks smarter, but how to get the id? See below for solution 2
MyEntity en = new MyEntity(); en.setName("My name"); em.persist(en); System.out.println(en.getId());
This prints a null id!
Any suggestions? I am using MySql, EclipseLink, but need a portable solution.
persist is not guaranteed to generate the ID. The ID is guaranteed to be generated at flush time only. So if you really need the ID before the transaction ends (and the entity manager is thus flushed), call flush() explicitely to get the ID:
MyEntity en = new MyEntity(); en.setName("My name"); em.persist(en); em.flush(); System.out.println(en.getId());
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With