Hi, the problem was in my code. 1. I get old Entity from DB. (db_entity) 2. I have new Entity from outside. (out_entity) 3. I take values from out_entity and set them to db_entity. It's plain update. 4. I persist db_entity with new values
BUT! While replacing values db_entity I have removed some other entities stored into db_entity fields. And I forgot to clean their links from other objects. That is why I got the exeption. My removed entities really were not fully removed. I've reviewed my code, cleaned all links to entites I wanted to delete and finally problem is solved. I was inattentive, that is why I made such stupid mistake and I was hard to catch such bag. 2009/1/19 Ognjen Blagojevic-3 (via Nabble) < [email protected]<ml-user%[email protected]> > > Hi Holod, > > What is your enviroment? Which app. server are you using? > > Maybe you could try to describe step 4. in more detail? How do you copy > referenced entities? > > -Ognjen > > holod wrote: > > I'm in strange situation. > > I have an entity Person. > > I have an EJB stateless bean which has three methods: > > 1. public createPerson(Person newPerson){...} > > 2. public updatePerson(Person newPerson, Person oldPerson){...} > > 3. private attachFields(Person detachedPerson){...} > > > > When I'm creating Person, my logic goes this way: > > 1. Outside bean Person is constructed, but It can have detached entities. > > > 2. Invoke stateless bean -> createPerson(newPerson); > > 3. Inside this method attachFields(newPerson) in invoked. > > > > Everything goes fine! All detached fields (for example only id of some > > referenced entity is specified) are attached, Person is successfully > > persisted. > > > > When I'm trying to update person, I get strange Exception (it's not > strange, > > but I can't get why does in happen). > > 1. Invoke updatePerson(newPerson, oldPerson); oldPerson is attached > entity, > > newPerson is a raw entity with detached referenced enitities. > > 2. delete referenced entities from oldPerson. > > 3. use em.flush(); to force deletion data from db. > > 4. set new fields from newPerson to oldPerson. > > 5 attachFields(oldPerson) now, oldPerson CAN'T have detached entities > > 6. use em.merge(oldPerson) to save newly created referenced entities > > > > And... I get exception: can't persist detached entity! and JPA prints > entity > > class bla.bla2.SomeEntityClass + [it's key]. > > But It can't be so! I get this entity from EntityManager and save it to > > field of oldPerson. > > The same procedure works fine when I create Person. > > > > I don't understand what's going on. > > > > Is there any possibility to know more details about such exception? I've > put > > logger.debug everywhere and I clearly see how every field of person is > taked > > from EntityManager. > > > > > > > > > > > > > > > > > > ------------------------------ > This email is a reply to your post @ > http://n2.nabble.com/Can%27t-persist-detached-object-tp1633496p2180467.html > You can reply by email or by visting the link above. > > -- View this message in context: http://n2.nabble.com/Can%27t-persist-detached-object-tp1633496p2185649.html Sent from the OpenJPA Users mailing list archive at Nabble.com.
