Search code examples
google-app-enginejpapersist

Google App Engine JPA persist() method is not populating my object's Id


I'm trying to persist a new Java object which has an auto-generated Id but it is not being populated upon calling EntityManager's persist() method. I have in my Object class..

...
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
...

and I'm persisting it essentially using...

emf = Persistence.createEntityManagerFactory("transactions-optional");
em = emf.createEntityManager();
em.persist(myObj);

After persisting it, the id field is not populated. I've tried calling em.flush() but it complains that it must be inside a transaction. I don't need or want transactions but I do need this Id immediately after persisting the object.

Is this a bug in GAE's implementation of JPA?

Any suggestions would be much appreciated!


Solution

  • I can confirm that calling em.refresh(object) will populate the id of the persisted object.