Hi
This was something I reported before , but I cannot find
the message anymore.
Are you using caching ? what type ? are you using cache
keys ?
Try:
a) new RefreshQuery(artist)
b) do a query in new context
c) do a query in new context with no caching.
In our setup we have overriden the CayenneContext
commitChanges and performQuery methods.
The latter attaches cache keys based on the query object,
the former executes RefreshQuery(String[] cacheKeys) based
on uncommittedObjects()
It does help in most occasions, but still getting counts
of toMany relationships is not refreshed.
Marcin
On Tue, 24 Jun 2008 14:37:43 +0400
"Andrey Razumovsky" <[EMAIL PROTECTED]> wrote:
Hi!
I can't figure out how to make the refreshing query work
with inserting or
deleting rows in database. For instance:
Artist a = ...
assert a.getPaintingsArray().size() == 0;
//here is direct insert into database a painting of
artist a (artistid=a.id
)
RefreshQuery refresher = new RefreshQuery();
context.performGenericQuery(refresher);
assert a.getPaintingsArray().size() == 1; //that's false
Everything works perfect when I sql-update in database.
When i sql-delete,
i do also get an exception like this:
org.apache.cayenne.FaultFailureException: [v.3.0M4 May
18 2008 16:32:02]
Error resolving fault, no matching row exists in the
database for ObjectId:
<ObjectId:Apkforecast, apkforecastid=3>
at
org.apache.cayenne.BaseContext.prepareForAccess(BaseContext.java:100)
at
com.nic.rainbow.data.auto._Apkforecast.getDate(_Apkforecast.java:29)
...and so on
when i try to iterate through related array
I'm using ROP if that helps. By the way, when i restart
client, the data
becomes correct, so i assume everything has changed
correctly on a server.
If that's not supported, can you give me some advice to
manually refresh the
desired relationships?
Thanks,
Andrey