cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kevin Menard <kmen...@servprise.com>
Subject Re: merging relationships
Date Fri, 18 Jan 2008 17:05:52 GMT
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.

-- 
Kevin


On 1/18/08 9:43 AM, "Andrus Adamchik" <andrus@objectstyle.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
>> 
> 


Mime
View raw message