Re: RefreshQuery not supports insert/delete?

From: Marcin Skladaniec (marci..sh.com.au)
Date: Tue Jun 24 2008 - 21:06:16 EDT

  • Next message: Andrey Razumovsky: "Re: RefreshQuery not supports insert/delete?"

    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" <razumovsky.andre..mail.com> 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



    This archive was generated by hypermail 2.0.0 : Wed Jun 25 2008 - 02:34:32 EDT