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>

Reply via email to