Many to many relation problems

From: Marcin Skladaniec (marci..sh.com.au)
Date: Sun Aug 06 2006 - 03:35:03 EDT

  • Next message: Kevin Menard: "Confluence access"

    Hi everyone !

    I have a problem with some counts in flattened many to many
    relationships. (remote persistence, v.3.0-PROTO July 5 2006)
    Generally the problem is when object exist in two contexts and the
    many to many relationship is modified.
    To reproduce this :

            CayenneContext context = new CayenneContext(channel, true, true);

             CLocation location = (CLocation) context.newObject
    (CLocation.class);
             CSpiece spiece = (CSpiece) context.newObject(CSpiece.class);
             context.commitChanges();
             logger.warn("location has spieces : "+location.getSpieces
    ().size()); //prints 0 as supposed.

             CayenneContext context2 = new CayenneContext(channel, true,
    true);

            CLocation loc = (CLocation)context2.localObject(location.getObjectId
    (), null);
            CSpiece sp = (CSpiece)context2.localObject(spiece.getObjectId(), null);
                    
            loc.addToSpieces(sp);
             context2.commitChanges();
             logger.warn("loc has spieces : "+loc.getSpieces().size
    ()); // prints 1 as expected

             logger.warn("location has spieces : "+location.getSpieces
    ().size());// prints 2, and here lies the problem.

    printing all spieces for location gives two results :
           1 - <cayenne3t.example.hr.CSpiec..740418,
    id=<ObjectId:Spieceid=280>, state=committed,
    context=org.objectstyle.cayenne.CayenneContex..5e2cf>
           2 - <cayenne3t.example.hr.CSpiec..740418,
    id=<ObjectId:Spieceid=280>, state=committed,
    context=org.objectstyle.cayenne.CayenneContex..5e2cf>
    Of course in context this object exists only once.

    If new context is spawned everything works fine, but I cant use new
    context in this case.
    There is no problem as well when removing from relationship.

    Is it a bug, or I'm doing something wrong here ?

    Marcin
    PS I have a small standalone project which reproduces this problem,
    if it would be needed please e-mail me.

    -------------------------->
    ish
    http://www.ish.com.au
    Level 1, 30 Wilson Street Newtown 2042 Australia
    phone +61 2 9550 5001 fax +61 2 9550 4001



    This archive was generated by hypermail 2.0.0 : Sun Aug 06 2006 - 03:36:00 EDT