nested dataContexts

From: edward pedersson (cpsmadnes..ooglemail.com)
Date: Fri Jan 05 2007 - 11:15:39 EST

  • Next message: Tomi N/A: "Re: [ANN] Cayenne Becomes a Top Level Apache Project"

    Hi

    I am using the latest version of Cayenne with Tapestry 4.0.1.

    I am having a bit of trouble using nested dataContexts. I would like the
    user to be able to create a new object in a wizrd style application but have
    the option to cancel half way through the stages.

    I have tried a few different options and noe seem to work. In the first
    instance I tried the nested datacontext like this:

    AClass parent; //assume this exists and is in the threaded context

    DataContext childContext = this.getDataContext().createChildContext() //
    this.getDataContext() is the threaded context

    AnotherClass newObject =
    (AnotherClass)childContext.createAndRegisterNewObject(AnotherClass.class);
    AClass localParentObject = (AClass)childContext.localObject(
    parent.getObjectId(),null);

    object.setParent(localParent);

    //do other stuff here like set other properties

    // now save to parent

    childContext.commitChangesToParent();

    For some reason I seem to get the parent having two children, not just the
    one! I assume it is because the changes in the childContext are propagated
    to the parent context so as a result the first setParent call adds the child
    to the parent and on commit changes the child is added again to the parent.

    So I tried to have separate dataContexts instead by doing this

    DataContext anotherContext = DataContext.createDataContext()

    AnotherClass newObject =
    (AnotherClass)anotherContext.createAndRegisterNewObject(AnotherClass.class);
    AClass localParentObject = (AClass)anotherContext.localObject(
    parent.getObjectId(),null);

    object.setParent(localParent);

    //do other stuff here like set other properties

    // now save to parent
    newObject = (AClass)this.getDataContext().localObject(newObject.getObjectId
    (),null);

    I get errors like Can't build a query for relationship '...' for temporary
    id:

    Does anyone knew what I am doing wrong?

    many thanks for your help.

    -- 
    

    -- e



    This archive was generated by hypermail 2.0.0 : Fri Jan 05 2007 - 11:16:10 EST