cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <and...@objectstyle.org>
Subject Re: Replace Objects in a Database?
Date Mon, 14 Apr 2008 14:24:42 GMT
no estimates... still "nearest future" ;-)

On Apr 14, 2008, at 4:52 PM, Borut BolĨina wrote:

> Andrus,
>
> what is the "status" of this merge functionality? Any estimates?
>
> Thanks,
> Borut
>
> 2007/11/29 Andrus Adamchik <andrus@objectstyle.org>:
>
>> In the nearest future we'll be adding a "merge" method to the  
>> DataContext
>> that would do exactly what you described here - reattach an already
>> persistent and possibly modified object to the context. For now the  
>> closest
>> analog is "localObject", but it will require some hacking. A  
>> reattach method
>> may look like this:
>>
>> void reattach(Persistent object) {
>>  // force "modified" on the object
>>  object.setPersistenceState(PersistenceState.MODIFIED);
>>  context.localObject(object.getObjectId(), object);
>> }
>>
>> This will do the right thing for objects not changed, but WILL NOT  
>> do the
>> right thing for the newly inserted objects.
>>
>> Andrus
>>
>>
>>
>> On Nov 29, 2007, at 1:33 PM, Detlef Burt wrote:
>>
>> Hello,
>>>
>>> after being able to keep my Data after sending my Objects via JMS
>>> (Thanks Andrus) I now have a problem when I try to write the  
>>> Objects back
>>> into the Database.
>>>
>>> After sending the Objects to the Client-Application, the Client  
>>> changes
>>> some data ( Just a timestamp in my Testcase ) and then sends an
>>> Update-Request to the Server. Due to the fact, that the Client has  
>>> no access
>>> to the DataContext or the underlying ObjectStore, the changes made  
>>> to the
>>> Object won't be recorded.
>>> After the Server receives the Object, it reconnects the Object to  
>>> the
>>> DataContext, thus being able to get a snapshot from the database  
>>> or even
>>> create an UpdateQuery.
>>> But I can't go anywhere from here.
>>> Executing the UpdateQuery won't have any effect because Cayenne  
>>> doesn't
>>> know what changed.
>>>
>>> I also tried to get a Snapshot from the DB, convert my DataObject  
>>> to a
>>> DataRow and then create and register the diff of those by myself.  
>>> But I
>>> couldn't find anything like that :/
>>>
>>> To sum it all up:
>>> - Can I tell Cayenne to replace the Database Contents with the  
>>> data from
>>> my Object while retaining the ObjectId ?
>>> - Can I tell Cayenne to "scan" an Object for changes and register  
>>> the
>>> differences, so that calling commitChanges will update the Object?
>>> - Or is it possible to create a DataRow from a DataObject so I can
>>> create and register an ObjectDiff ?
>>>
>>> NOTE:
>>> When updating the Object, I don't know what class is being updated  
>>> and
>>> what properties it has, all I have is my CayennePersistableObject  
>>> Baseclass,
>>> which extends CayenneDataObject.
>>>
>>> Detlef
>>>
>>>
>>>
>>


Mime
View raw message