On 3/5/08 10:43 AM, "Andrus Adamchik" <[EMAIL PROTECTED]> wrote:
> > On Mar 5, 2008, at 5:39 PM, Kevin Menard (JIRA) wrote: > >> However, it is fairly trivial to show that a relationship mapped as >> a List can hold a duplicate. > > But the question then "is this a bug"? I don't think it is. I suppose that's the million dollar question. At the very least, the documentation is misleading. The correct behavior is another matter and is something that has come up before on the list. If the underlying list is supposed to represent the data rows, then I think it is a bug. In the example provided, if I commit the context, only one artist and one painting are going to be persisted. If in another context I perform a query and grab the same artist, its painting list will be different -- one element fewer. So, there's this incongruity between the data model contents and the object model contents. Ultimately, Cayenne does the right thing and shields a user from invalid duplicates, but not in the object model the user is working with. The issue gets a little more complicated when an entity has two relationships to another entity. I've seen duplicates appear in the following situation. Artist <-1--------*-- Painting Artist --1--------1-> Painting For instance, maybe an artist has a favorite painting, so that ID is stored in the Artist table. Otherwise, Paintings maintain mappings to Artists. Through a sequence of events similar to: artist.addToPaintings(painting); artist.setFavorite(painting); I've seen duplicates appear such that artist.getPaintings() has two entries even though it's associated only with a single painting. There may be more going on there. I couldn't verify behavior with that simple example, but I think there is something going on there. -- Kevin
