In my application I have bi-directional one-to-many relationship between Venue and Tip.
@Entity public class Venue implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Key key; @OneToMany(cascade = CascadeType.ALL, mappedBy="venue") private List<Tip> tips; @Entity public class Tip implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Key key; private Integer version; @ManyToOne(fetch = FetchType.LAZY) private Venue venue; I have venue object persisted and then tip is added to the venue. I don't any any problem in doing this. Venue venue = venueService.find(key); venue.addTip(tip); venueService.merge(venue); Then I expand the relationship to have another bi-directional one-to- many relationship between Person and Tip. Tip is posted by a Person and for a Venue. One Person can post more than one Tips for a Venue. @Entity public class Tip implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Key key; @ManyToOne(fetch = FetchType.LAZY) private Venue venue; @ManyToOne(fetch = FetchType.LAZY) private Person postedBy; @Entity public class Person implements Serializable, UserDetails { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Key key; @OneToMany(cascade = CascadeType.ALL, mappedBy="postedBy") private List<Tip> tips; Venue venue = venueService.find(key); Person person = personService.find(userId); venue.addTip(tip); person.addTip(tip); venueService.merge(venue); I am getting the following error: Detected attempt to establish Person(29)/Tip(125) as the parent of Venue(2) but the entity identified by Venue(2) has already been persisted without a parent. A parent cannot be established or changed once an object has been persisted. org.datanucleus.store.appengine.FatalNucleusUserException: Detected attempt to establish Person(29)/Tip(125) as the parent of Venue(2) but the entity identified by Venue(2) has already been persisted without a parent. A parent cannot be established or changed once an object has been persisted. at org.datanucleus.store.appengine.DatastoreRelationFieldManager.checkForParentSwitch (DatastoreRelationFieldManager.java:204) at org.datanucleus.store.appengine.DatastoreRelationFieldManager $1.setObjectViaMapping(DatastoreRelationFieldManager.java:125) at org.datanucleus.store.appengine.DatastoreRelationFieldManager$1.apply (DatastoreRelationFieldManager.java:104) at org.datanucleus.store.appengine.DatastoreRelationFieldManager.storeRelations (DatastoreRelationFieldManager.java:78) at org.datanucleus.store.appengine.DatastoreFieldManager.storeRelations (DatastoreFieldManager.java:812) at org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPostProcess (DatastorePersistenceHandler.java:288) at org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects (DatastorePersistenceHandler.java:241) at org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject (DatastorePersistenceHandler.java:225) at org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent (JDOStateManagerImpl.java:3185) at org.datanucleus.state.JDOStateManagerImpl.flush (JDOStateManagerImpl.java:4513) at org.datanucleus.sco.SCOUtils.validateObjectForWriting(SCOUtils.java: 1494) at org.datanucleus.store.mapped.scostore.ElementContainerStore.validateElementForWriting (ElementContainerStore.java:380) at org.datanucleus.store.mapped.scostore.FKListStore.validateElementForWriting (FKListStore.java:609) at org.datanucleus.store.mapped.scostore.FKListStore.internalAdd (FKListStore.java:344) at org.datanucleus.store.mapped.scostore.AbstractListStore.add (AbstractListStore.java:105) at org.datanucleus.sco.backed.List.add (List.java:649) at guestbook.domain.Person.addTip(Person.java:164) at guestbook.web.mvc.TipController.create(TipController.java:94) at Any idea? Your help is very much appreciated. -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.