You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Andrus Adamchik <an...@objectstyle.org> on 2006/06/01 17:46:10 UTC

Re: Making a copy of an object that is persisted by Cayenne

Eric,

Cayenne 1.2 has some unadvertised object graph cloning facilities  
centered around ClassDescriptor interface (that has a 'shallowMerge'  
method). I've written a few specialized operations, such as  
DeepMergeOperation and ObjectDetachOperation in Util package that are  
doing smart deep copy for some internal use.

Could you explain a bit what is the purpose of the copy operation and  
whether the original and cloned objects are (or should be) registered  
with a DataContext and whether this is the same DataContext for the  
original and the clone.

Andrus

On May 31, 2006, at 1:03 PM, Eric Lazarus wrote:

> What are the best ways to copy an object that is
> persisted by Cayenne? I'm an old-time smalltalk
> programmer and like to write a copy and a postCopy
> method  where a shallowCopy method is called before
> the postCopy method is called and shallowCopy just
> calls clone.
>
> Are there any tricks to do take into account when
> doing a copy of a subclass of a cayenne DataObject?
>
> Does the clone method perform a shallowCopy and give
> me back something that will persist correctly? Do I
> need to do something so that the clone will be known
> to cayenne? Perhaps clone is not supported at all in
> cayenne?
>
> I see a mention of SnapShot but I dont know what that
> is. I also see cloneViaSerialization but perhaps that
> is just for use with internal data structures and not
> my domain objects?
>
> Thanks,
>
> Eric