Re: Help! I need the magic no-cache recipe

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Tue Jul 08 2008 - 09:24:54 EDT

  • Next message: Joe Baldwin: "CayenneModeler: "Superclass Package"

    Hi Chris,

    On Jul 8, 2008, at 3:59 PM, Chris Gamache wrote:
    > I can now say, beyond a shadow of a doubt, that cayenne is caching
    > relational requests when the same keys are used to retrieve the
    > parent data
    > object.

    Yeah, each object within a DataContext is guaranteed to exist as a
    single instance, so all its relationships will be preserved, even if
    it is fetched multiple times, unless you use prefetching.

    > The rows returned from the toMany request are volatile, and need to
    > be re-queried when a new SelectQuery is run.

    You need to use prefetching.

    >> someQuery.addPrefetch("thisRelationIsaToManyList");
    >> context.execute(someQuery); //throws ClassCastException in the part
    >> of
    >> the code where it is trying to prefetch.
    >>
    >> How do I make certain the cayenne is not caching data from a relation
    >> that returns a ToManyList? Probably not addPrefetch() because it
    >> throws a ClassCastException.

    Prefetching works. I guess you used the wrong prefetch key that caused
    the error, but that's no reason to give up. The string you pass to
    "addPrefetch" must be a relationship name for the entity that is a
    root of the query.

    Andrus



    This archive was generated by hypermail 2.0.0 : Tue Jul 08 2008 - 09:25:27 EDT