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
>
>
This archive was generated by hypermail 2.0.0 : Thu Nov 29 2007 - 15:15:15 EST