Thank you for the extra information. If you enable debug output for the ORM layer, you may see an explanation for why you don't need to detach your object again after retrieving it from memcache. Since it works for you without the second detachment, I recommend omitting the second detachCopy call and moving on.
If you're still curious, check out the ORM debug output. Just change the DataNucleus lines in logging.properties to INFO instead of WARNING. - Jason On Wed, Jan 13, 2010 at 8:15 PM, Prashant Gupta <[email protected]>wrote: > Yes, it works fine if I do not detach second time... > > 2010/1/14 Jason (Google) <[email protected]> > > Does your application work if you don't detach the entity a second time? >> For instance, are you able to update the entity, re-cache it, then retrieve >> it and pass it back into makePersistent without any errors? I was under the >> impression that passing an entity into makePersistent re-attaches the >> entity, but it's also possible that you don't need to explicitly detach it >> more than once. >> >> - Jason >> >> On Tue, Jan 12, 2010 at 7:15 AM, Prashant Gupta >> <[email protected]>wrote: >> >>> Hi, >>> >>> Here is my doubt... >>> >>> Suppose I created a new Entity : Entity ety = new Entity(); >>> Created a new persistent manager and made it persistent : >>> pm.makePersisent(ety); >>> Detached it and cached to memcache : cache.put("myentity", >>> pm.detachCopy(ety)); >>> pm.close(); >>> >>> now, in the same request or subsequent request, I need that entity again. >>> So, I picked it from memcache : Entity ety = cache.get("myentity"); >>> Made some changes : ety.doSomeChange(); >>> Opened a new persistent manager and persisted it : >>> pm.makePersistent(ety); >>> Now I want to update memcache also : cache.put("myentity", * >>> pm.detachCopy(ety)*); // line 204 >>> pm.close(); >>> >>> Is it required to detach entity second time? While trying to detach is >>> second time I am getting following exception; >>> >>> javax.jdo.JDOUserException: Object of type "xyz.Entity" and identity >>> "ety" was not detached correctly. Please consult the log for any possible >>> information. >>> at >>> org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:375) >>> at >>> org.datanucleus.jdo.JDOPersistenceManager.jdoDetachCopy(JDOPersistenceManager.java:1110) >>> at >>> org.datanucleus.jdo.JDOPersistenceManager.detachCopy(JDOPersistenceManager.java:1134) >>> at HelperClass.makePersistent(HelperClass.java:204) >>> ..... >>> >>> I am not able to point out any other reason for this exception. >>> >>> Following is my Entity Class : >>> >>> @PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = >>> "true") >>> public class Entity implements Serializable{ >>> >>> @SuppressWarnings("unused") >>> @Persistent(primaryKey = "true") >>> private String ID; >>> >>> @Persistent >>> private String Version; >>> >>> @Persistent >>> private Boolean Enabled; >>> @Persistent >>> private Date TimeStamp; >>> @Persistent >>> private LinkedList<Key> Permissions; >>> @SuppressWarnings("unused") >>> @Persistent >>> private ModuleType Type; // ModuleType is an Enum Type >>> >>> >>> -- >>> 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 >>> [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]<google-appengine-java%[email protected]> >>> . >>> 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 >> [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<google-appengine-java%[email protected]> >> . >> 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 > [email protected]. > To unsubscribe from this group, send email to > [email protected]<google-appengine-java%[email protected]> > . > 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 [email protected].
To unsubscribe from this group, send email to [email protected].
For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
