Re: weird problems with context

From: Lachlan Deck (lachlan.dec..mail.com)
Date: Fri Jun 01 2007 - 22:24:30 EDT

  • Next message: Lachlan Deck: "Re: performing count"

    Hi Marcin,

    On 02/06/2007, at 11:43 AM, Marcin Skladaniec wrote:

    > I'm having a strange problem. When executing this bit of code:
    >
    > List categories = aContext.performQuery(new SelectQuery
    > (Category.class));
    > if (categories.size() != 0) {
    > for (int categoriesCount = 0; categoriesCount < categories.size();
    > categoriesCount++) {
    > Category cat = (Category) categories.get(categoriesCount);
    > logger.debug("context equal ? " + cat.getObjectContext().equals
    > (aContext));
    > }
    > }

    Try this:
    logger.debug("context equal ? " + aContext == cat.getObjectContext());

    The spanner in the works here (on the server-side) is the use of the
    ObjectContextCallbackInterceptor (see bottom of http://
    cayenne.apache.org/doc/lifecycle-callbacks.html) which doesn't
    override equals.

    Thus, you might also want to try:
    if (aContext instanceof ObjectContextCallbackInterceptor)
            logger.debug("context equal ? " + ((ObjectContextCallbackInterceptor)
    aContext).getContext() == cat.getObjectContext());
    else
            logger.debug("context equal ? " + aContext == cat.getObjectContext());

    (ps, svn up... I've added it to our ObjectContextCallbackInterceptor
    subclass ;-) But it'll be worth submitting a bugreport for this.

    > the contexts are not equal, and I cant find the reason why !
    >
    > I found this problem, because the perPersist() callback is not
    > fired when I do
    > cat.getObjectContext().newObject(SomeEntity.class)
    > but it is when
    > aContext.newObject(SomeEntity.class)
    > to add complexity, postPersist() and other callbacks are fired in
    > both cases.

    with regards,

    --
    

    Lachlan Deck



    This archive was generated by hypermail 2.0.0 : Fri Jun 01 2007 - 22:25:07 EDT