Hallo, thank you again: now I got it! I needed examples :-)
> Well, if you can mark each entity with whether it's persistent or not, Yes. > you could do this: > > public void addToManyTarget(Object obj, ...) > { > if obj.isNonpersistent() > { > nonpersistentSet.add(obj); > } > else > { > super.addToManyTarget(obj, ....); > } > } > > public List getList() > { > List list = new ArrayList(super.getList()) > list.addObjects(nonPersistentSet); > } This defines me "persistent -> (non)persistent". > Things get more complicated if you want to have reverse relationships > set for your non-persistent objects. I have implemented a > non-persistent object DAO using the Cayenne api for testing and > development. It's not pretty, but it can be done. Do you mean that "nonpersistent -> (non)persistent" will be complicated? Why? I can do the following: public void addToManyTarget(Object obj, ...) { if(this.isNonpersistent()) { allObjects.add(obj); } else { if obj.isNonpersistent() { nonpersistentSet.add(obj); } else { super.addToManyTarget(obj, ....); } } } Would this work? > And that's not going to handle what happens if you try to do a query > on object sets that are both persistent and non-persistent. I will not get the references in the nonpersistent-object-list, right? Another question: How does cayenne hold objects in memory? As a normal reference, as WeakReference or even as PhantomReference? Peter.