Re: Replace Objects in a Database?

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Mon Apr 14 2008 - 10:24:42 EDT

  • Next message: Scott Anderson: "RE: Generalized DB editor"

    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 <andru..bjectstyle.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
    >>>
    >>>
    >>>
    >>



    This archive was generated by hypermail 2.0.0 : Mon Apr 14 2008 - 10:25:15 EDT