Obviously I can't speak for Marcin, but this sounds very much like a problem
I had been running into before.
If I added a new object to some entity as a relationship, then removed it
from that entity, but added it to a completely different one, Cayenne would
attempt to do two INSERTs for the same object. I think I had got around it
by doing a commit after the deletion but before the next addition. My
memory may be hazy on it though.
-- KevinOn 1/18/08 9:43 AM, "Andrus Adamchik" <andru..bjectstyle.org> wrote:
> I don't understand the reason for the error... Did it happen because > source and destination are the same object or something? Otherwise I > don't see where the duplicate key is created? > > Andrus > > > On Jan 17, 2008, at 8:28 AM, Marcin Skladaniec wrote: > >> Hello >> >> I have encountered an exception when trying to merge relationships >> using this code : >> >> Artist source; >> Artist destination; >> while (source.getPaintings().size() > 0) { >> Object value = source. getPaintings().get(0); >> >> source.removeFromPaintings(value); >> destination.addToPaintings(value); >> } >> >> This code works for one-to-many relationships, no surprise. For the >> many-to-many relationships with intermediate table with compound pk >> the result is, that upon commit an error message comes up: >> >> The statement was aborted because it would have caused a duplicate >> key value in a unique or primary key constraint or unique index >> identified by 'SQL071114101016080' defined on >> 'ARTIST_PAINTING'.java.sql.SQLException: The statement was aborted >> because it would have caused a duplicate key value in a unique or >> primary key constraint or unique index identified by >> 'SQL071114101016080' defined on 'ARTIST_PAINTING' >> >> It is a perfectly valid error message, and we have avoided it >> already, but shouldn't cayenne resolve this internally and prevent >> creating double relationship ? >> >> With regards >> Marcin >> >
This archive was generated by hypermail 2.0.0 : Fri Jan 18 2008 - 12:06:27 EST