Hi Marcin,

I just tried to reproduce it with the code from HEAD, and it seems to work (CayenneContextClientChannelEventsTst.testSyncManyToManyRelationship1). Don't know if you have an opportunity to upgrade from 3.0-PROTO to HEAD (this will require package changes to Apache, and also using the new Modeler from HEAD). If not, please either submit your test case via Jira or send it to me directly. Let's take a look.

Andrus

On Aug 6, 2006, at 3:35 AM, Marcin Skladaniec wrote:

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