Hi Bardolf, In the example above you're using an application managed EntityManager. Application managed EMs are considered extended persistence contexts by default (ie the lifecycle of the persistence context can cross transactions).
In this environment when you call EntityManager.find() a managed entity will be returned. Since the entity is managed any changes you make to it will be committed when you commit the transaction. If you don't want the entity to be managed you can call EntityManager.clear() which detaches all entities or you can call OpenJPAEntityManager.detach(myEntity) to detach a single instance. The code might look something like this : EntityManager em = javax.persistence.Persistence .createEntityManagerFactory("JavaApplication3PU").createEntityManager(); Address ad = em.find(Address.class,1); ad.setMyProperty(xxx); em.clear(); // detach all managed entities // Detach a single entity // OpenJPAPersistence.cast(em).detach(ad); em.getTransaction().begin(); // if you decide you want the changes to be made after all uncomment this line // ad = em.merge(ad); em.getTransaction().commit(); I'm writing this from memory so this might not quite match up. Hope this helps, -Mike On Fri, Mar 21, 2008 at 8:36 PM, bardolf <[EMAIL PROTECTED]> wrote: > Hi all, > I have following question. Why JPA call updates on all changed entities > during commit even though persist wasn't called. > > [snip] > EntityManager em = > javax.persistence.Persistence.createEntityManagerFactory > ("JavaApplication3PU").createEntityManager(); > Address ad = em.find(Address.class,1); > ad.setMyProperty(xxx); > em.getTransaction().begin(); > em.getTransaction().commit(); > [/snip] > > And even though I didn't call persist, changes are updated in database. > WHY??? > > Thanks B. > >