On May 29, 2007, at 8:20 PM, Kevin Menard wrote:
-----Original Message----- From: Andrus Adamchik [mailto:[EMAIL PROTECTED] Sent: Thursday, May 24, 2007 5:52 AM To: [email protected] Subject: Re: Behavior of "remove(object)" on ToManyList Hi Alex, Well, actually one of Cayenne responsibilities is maintaining consistent object graph. To-many lists are a part of that object graph. So if you want to remove an object from the list for presentation reasons, but keep the relationship intact, the only right way is to clone the list and remove items from the clone. I.e.: List centers = new ArrayList(getSelectedCountry().getCenters());Perhaps it would make sense if the relationships return unmodifiable Lists then? It seems to me like it could clear up this whole class of problems.
... and create its own set of problems. The data in memory is a working copy of what you expect the database to look like after you commit the transaction. And a very natural way of changing the data model is to simply change the collection that represents the relationship.
If you made the collection read-only, then the only way to change the contents would be to make a working copy of the read-only collection, change it, and then replace the collection field in the domain object. So you're just trading off one inconvenience for another.
Both JDO and JPA return read-write collections and allow you to modify the contents with the intent of updating the database with the changes...
Craig
-- Kevin
Craig Russell Architect, Sun Java Enterprise System http://java.sun.com/products/jdo 408 276-5638 mailto:[EMAIL PROTECTED] P.S. A good JDO? O, Gasp!
smime.p7s
Description: S/MIME cryptographic signature
