RE: creating/saving transient objects to database

From: Fredrik Liden (flide..ranslate.com)
Date: Thu Jun 21 2007 - 18:10:19 EDT

  • Next message: Michael Lepine: "Re: creating/saving transient objects to database"

    If you're calling newObject you'll get a registered object with
    PersistenceState.NEW. so consequently the commit tries to insert it.

    I'm thinking at some point you'll need to manually check if the object
    exists in the database or not based on some criteria. Maybe you can
    create a service class that checks using a query if the Pojo object
    exists in the db. If it does it returns the existing DataObject and if
    not it returns the object using newObject. Then the persistenceState
    will be either NEW or COMMITED and commit will trigger insert and update
    respectively.

    Of course the Cayenne guys probably have some other nifty way to do it.

    Fredrik
     

    -----Original Message-----
    From: Michael Lepine [mailto:mikelepin..mail.com]
    Sent: Thursday, June 21, 2007 2:46 PM
    To: use..ayenne.apache.org
    Subject: creating/saving transient objects to database

    I've got a situation where I've got strict POJO objects that I'll need
    to
    copy data from and into my generated Cayenne classes. My issue is that
    when
    I copy the data from the bean to the Cayenne class, I don't know whether
    the
    object exists or not. Thus, I create the Cayenne class instance using
    DataContext.newObject(). Obviously, when I call
    DataContext.commitChanges(),
    an insert is being attempted on the corresponding table even if a record
    already exists in the database.

    Is there a way to create the Cayenne instance so that the persistent
    layer
    will know to check whether the record exists and update it instead of
    always
    attempting an insert?

    Any help and guidance are appreciated.



    This archive was generated by hypermail 2.0.0 : Thu Jun 21 2007 - 18:10:44 EDT