I've read something like that in the docs today. I've test to call getLastLocation() a couple of hours ago, but it don't help to solve the issue.
2011/1/4 Stephen Johnson <onepagewo...@gmail.com> > I just took a quick glance at your original post. The only thing I can > think of is that in the original code you don't call getLastLocation so if > you have lazy loading on then that object wouldn't get loaded and perhaps > then the JDO mechanism doesn't realize to get the old object and delete it > and re-assign the new object. In your original code I'd try doing a > getLastLocation call to force the load. I use JDO but I don't use it's > automatic relationship management. I manage all my relationships myself so I > have complete control and don't need to then worry about these issues so in > essence JDO for me is just a simple mapper between Java and the Datastore > and it works very well for me. > > > On Tue, Jan 4, 2011 at 10:56 AM, yoyo <yoyomo...@gmail.com> wrote: > >> I don't really have to do like that. Your solution is more clean and I >> will use it. Thanks. >> But for learning purpose, I've used some others methods. >> I don't know why i can't update a children reference per another. >> In fact, the new object is in the datastore. When I manually delete the >> first reference, the parent now refer his new children. Weird. >> >> 2011/1/4 Stephen Johnson <onepagewo...@gmail.com> >> >> Why do you have to delete the location entity? Why not just update the >>> current location entity with the new coordinates? That would be much >>> more efficient. >>> >>> >>> On Tue, Jan 4, 2011 at 10:20 AM, yoyo <yoyomo...@gmail.com> wrote: >>> >>>> The update still don't works. I give up. >>>> >>>> I use the "@Persistent(dependent = "true")" and add the delete >>>> instruction when I update the user location, in a transaction. >>>> Now it works, but I think it's not very clean/efficient. >>>> >>>> Have a nice day. >>>> >>>> public void updateUserLocation(String username, Location newLocation) >>>> { >>>> PersistenceManager pm = PMF.getPersistenceManager(); >>>> Transaction tx = pm.currentTransaction(); >>>> try { >>>> >>>> // Get the user and update the location >>>> >>>> tx.begin(); >>>> POJOUser user = pm.getObjectById(POJOUser.class, username); >>>> pm.deletePersistent(user.getLastLocation()); >>>> user.setLastLocation(new POJOLocation(newLocation)); >>>> tx.commit(); >>>> >>>> } catch (JDOObjectNotFoundException ex) { >>>> >>>> } finally { >>>> >>>> if (tx.isActive()) { >>>> tx.rollback(); >>>> } >>>> pm.close(); >>>> } >>>> } >>>> >>>> @PersistenceCapable >>>> public class POJOUser { >>>> >>>> /** Primary key */ >>>> @PrimaryKey >>>> @Persistent >>>> private String key = null; >>>> >>>> /** Username */ >>>> @Persistent >>>> private String username = null; >>>> >>>> /** Password */ >>>> @Persistent >>>> private String password = null; >>>> >>>> /** The last location of the user */ >>>> @Persistent(dependent = "true") >>>> private POJOLocation lastLocation = null; >>>> ... >>>> } >>>> >>>> @PersistenceCapable >>>> public class POJOLocation implements Location { >>>> >>>> /** Primary key */ >>>> @PrimaryKey >>>> @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) >>>> private Key key = null; >>>> >>>> /** X */ >>>> @Persistent >>>> private Double x = null; >>>> >>>> /** Y */ >>>> @Persistent >>>> private Double y = null; >>>> .... >>>> } >>>> >>>> >>>> -- >>>> 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<google-appengine-java%2bunsubscr...@googlegroups.com> >>>> . >>>> For more options, visit this group at >>>> http://groups.google.com/group/google-appengine-java?hl=en. >>>> >>> >>> -- >>> 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<google-appengine-java%2bunsubscr...@googlegroups.com> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/google-appengine-java?hl=en. >>> >> >> -- >> 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<google-appengine-java%2bunsubscr...@googlegroups.com> >> . >> For more options, visit this group at >> http://groups.google.com/group/google-appengine-java?hl=en. >> > > -- > 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<google-appengine-java%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/google-appengine-java?hl=en. > -- 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.