I went through the api documents (imagine that these days...) and found that 
this is the equivalent of invalidateAllObjects:
context.invalidateObjects(context.getGraphManager().registeredNodes());

I stepped through it in the debugger and it really seems to be it.

Rob

> On 20 Apr 2026, at 17:20, Andrus Adamchik <[email protected]> wrote:
> 
> Hi Rob,
> 
> Actually, "no cache" is the default strategy for every query. What may remain 
> cached after a query is related objects. So while you do not need an explicit 
> "cacheStrategy(QueryCacheStrategy.NO_CACHE)", you may need to curate your 
> prefetches to ensure the relevant subgraph is refreshed. 
> 
> Andrus
> 
> 
>> On Apr 20, 2026, at 11:15 AM, Robert A. Decker <[email protected]> wrote:
>> 
>> Is it as simple as:
>> 
>> List<AiJob> jobs = ObjectSelect.query(AiJob.class)
>> .cacheStrategy(QueryCacheStrategy.NO_CACHE)
>> .where(...
>> 
>> I just want the entire graph of the fetch to be fresh each time.
>> 
>> Rob
>> 
>> 
>>> On 20 Apr 2026, at 13:49, Robert A. Decker <[email protected]> wrote:
>>> 
>>> I have a couple of different systems modifying the database my cayenne code 
>>> is talking to. Every now and then I see behaviour that I think says that 
>>> something is being cached between database searches even though I create a 
>>> new context before each search:
>>> ObjectContext context = cayenne.newContext();   (cayenne is a ServerRuntime 
>>> built like at the end of this message)
>>> 
>>> Even though I'm creating a new context before the search, could the server 
>>> runtime that the context is built from be caching objects? If so, should I 
>>> wipe the cache before the search? Or is there a way to make sure it doesn't 
>>> work with a cache?
>>> 
>>> thanks,
>>> Rob
>>> 
>>> 
>>> 
>>>      cayenneRuntime = ServerRuntime.builder()
>>>              .addConfig("cayenne-project.xml")
>>>              .addModule(binder ->
>>>                      ServerModule.contributePkGenerators(binder)
>>>                              .put(MySQLAdapter.class.getName(), 
>>> SmsPkGenerator.class))
>>>              .dataSource(DataSourceBuilder
>>>                      
>>> .url(environment.getProperty("org.apache.cayenne.datasource.jdbc.url"))
>>>                      
>>> .driver(environment.getProperty("org.apache.cayenne.datasource.jdbc.driver"))
>>>                      
>>> .userName(environment.getProperty("org.apache.cayenne.datasource.jdbc.username"))
>>>                      
>>> .password(environment.getProperty("org.apache.cayenne.datasource.jdbc.password"))
>>>                      
>>> .pool(Integer.parseInt(Objects.requireNonNull(environment.getProperty("org.apache.cayenne.datasource.jdbc.minConnections"))),
>>>                            
>>> Integer.parseInt(Objects.requireNonNull(environment.getProperty("org.apache.cayenne.datasource.jdbc.maxConnections"))))
>>>                      .build())
>>>              .build();
>>> 
>> 
> 

Reply via email to