I can confirm... prefetching is the way to go. 
https://cayenne.apache.org/docs/4.0/cayenne-guide/performance-tuning.html#prefetching

I was having a similar issue where my most recently committed records were not 
showing up in subsequent queries. Prefetching is what fixed it for me. You can 
apply prefetching to ObjectSelect as well as SelectQuery as in the docs.

________________________________________
From: Andrus Adamchik <and...@objectstyle.org>
Sent: Wednesday, April 20, 2016 2:54 AM
To: user@cayenne.apache.org
Subject: Re: Object relationship freshness

> *changing this to “false”

While this may solve the immediate problem, turning off shared object cache is 
not terribly efficient. I would recommend against it.

>>> weirdly I see one of the
>>> relationship queries fire again, but not the other…either way both objects
>>> “snapshots” (EOF term) are as they were originally

If you actually see SQL in the logs that reads a relationship, it should 
absolutely refresh the cache.

Generally if you don't want to-one relationships to be resolved from cache, the 
most reliable approach is to use prefetching on the query that fetched the root 
object.

Andrus



> On Apr 20, 2016, at 2:07 AM, Lon Varscsak <lon.varsc...@gmail.com> wrote:
>
> *changing this to “false”
>
> On Tue, Apr 19, 2016 at 4:07 PM, Lon Varscsak <lon.varsc...@gmail.com>
> wrote:
>
>> It looks like I had cayenne.DataDomain.sharedCache=true in my model.
>> Changing this to default solved my issue.  Seem reasonable?
>>
>> On Tue, Apr 19, 2016 at 3:50 PM, Lon Varscsak <lon.varsc...@gmail.com>
>> wrote:
>>
>>> Hey guys,
>>>
>>> I’m executing a query and then referencing the fetched object and some
>>> relationships on the fetched object.  Later, I create a new ObjectContext
>>> (old one is thrown away) and I issue the fetch again and I notice that the
>>> relationship objects are not refreshed (weirdly I see one of the
>>> relationship queries fire again, but not the other…either way both objects
>>> “snapshots” (EOF term) are as they were originally).
>>>
>>> I’m not caching any results, shouldn’t data go stale after it’s
>>> ObjectContext is gone?
>>>
>>> -Lon
>>>
>>
>>

Reply via email to