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 - <[EMAIL PROTECTED], id=<ObjectId:Spieceid=280>, state=committed, [EMAIL PROTECTED]> 2 - <[EMAIL PROTECTED], id=<ObjectId:Spieceid=280>, state=committed, [EMAIL PROTECTED]>
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


Reply via email to