Question

I have an attribute which is annotated with @Id. The ID is going to be generated automatically when persisting the object. That means that the ID-value is not defined before I persist the object. After persisting it, it has an ID (in the database), but unfortunately the field still remains null as long as I don't reload it from the DB. is there any easy way to find out the generated id? Or better: To configure that it will be written into the field?

Thanks in advance

Was it helpful?

Solution

The id gets assigned after the flush. Assuming the Foo entity has an id attribute annotated with the standard @Id @GeneratedValue annotations, the following code works:

Foo foo = new Foo();
//...
em.persist(foo);
em.flush();
assert foo.getId() != null;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top