In 4.0 we are using SelectById query that hits query cache, which I am pretty sure is free of this issue.
Will need to investigate ObjectIdQuery behavior. Andrus > On May 18, 2016, at 5:22 PM, Frank Herrmann > <frank.herrm...@modernizingmedicine.com> wrote: > > Hi Andrus, > > Yes, superclass/subclass. We are using Cayenne.objectForQuery(...); > > Specifically, > > Cayenne.*objectForQuery*(dataContext, *new* ObjectIdQuery(oid, *false*, > ObjectIdQuery.*CACHE*)); > > On Wed, May 18, 2016 at 10:11 AM, Andrus Adamchik <and...@objectstyle.org> > wrote: > >>> I have a question and an observation. While reading some of the Cayenne >>> code, we've noticed reference to a snapshot cache. Is this the object >>> cache, or something different? >> >> Correct. This is shared object cache. >> >>> The issue we are seeing has to do with cayenne objects that are >>> parents/children of other cayenne objects. For instance, we have a User >>> object, we also have Staff and Patient objects that are children of the >>> User object. >> >> By parent/child you mean superclass/subclass? >> >>> >>> What we have seen is that if a developer does a query for a User object >> by >>> id, the object is retrieved. Cayenne sees that this object is a Staff >>> object and then stores it in the object cache as a Staff object. The next >>> time the user goes to retrieve the User object (by the same id), Cayenne >>> does another call to the database, because it cannot find the User object >>> in the cache (because it stored it as a Staff object). >> >> Could be a bug. Which API are you using? Cayenne.objectForPK(..) ? >> >> Andrus >> >> >> >>> On May 18, 2016, at 4:31 PM, Frank Herrmann < >> frank.herrm...@modernizingmedicine.com> wrote: >>> >>> Hello all, >>> >>> I have a question and an observation. While reading some of the Cayenne >>> code, we've noticed reference to a snapshot cache. Is this the object >>> cache, or something different? >>> >>> The issue we are seeing has to do with cayenne objects that are >>> parents/children of other cayenne objects. For instance, we have a User >>> object, we also have Staff and Patient objects that are children of the >>> User object. >>> >>> What we have seen is that if a developer does a query for a User object >> by >>> id, the object is retrieved. Cayenne sees that this object is a Staff >>> object and then stores it in the object cache as a Staff object. The next >>> time the user goes to retrieve the User object (by the same id), Cayenne >>> does another call to the database, because it cannot find the User object >>> in the cache (because it stored it as a Staff object). >>> >>> Thanks again for the help. >>> >>> -Frank >>> >>> -- >>> FRANK HERRMANN >>> SOFTWARE ENGINEER >>> >>> T: 561-880-2998 x1563 >>> >>> E: frank.herrm...@modmed.com >>> >>> >>> >>> [image: [ Modernizing Medicine ]] <http://www.modmed.com/> >>> [image: [ Facebook ]] <http://www.facebook.com/modernizingmedicine> >> [image: >>> [ LinkedIn ]] <http://www.linkedin.com/company/modernizing-medicine/> >> [image: >>> [ YouTube ]] <http://www.youtube.com/user/modernizingmedicine> [image: [ >>> Twitter ]] <https://twitter.com/modmed_EMA> [image: [ Blog ]] >>> <http://www.modmed.com/BlogBeyondEMR> [image: [ Instagram ]] >>> <http://instagram.com/modernizing_medicine> >> >> > > > -- > FRANK HERRMANN > SOFTWARE ENGINEER > > T: 561-880-2998 x1563 > > E: frank.herrm...@modmed.com > > > > [image: [ Modernizing Medicine ]] <http://www.modmed.com/> > [image: [ Facebook ]] <http://www.facebook.com/modernizingmedicine> [image: > [ LinkedIn ]] <http://www.linkedin.com/company/modernizing-medicine/> [image: > [ YouTube ]] <http://www.youtube.com/user/modernizingmedicine> [image: [ > Twitter ]] <https://twitter.com/modmed_EMA> [image: [ Blog ]] > <http://www.modmed.com/BlogBeyondEMR> [image: [ Instagram ]] > <http://instagram.com/modernizing_medicine>