Re: creating/saving transient objects to database

From: Michael Lepine (mikelepin..mail.com)
Date: Thu Jun 21 2007 - 18:32:28 EDT

  • Next message: Aristedes Maniatis: "Re: creating/saving transient objects to database"

    Thanks for replying. I started to think I may have to do what you were
    suggesting below as well.

    I'll look (and hope) for other solutions that may be cleaner though.

    Thanks again.

    On 6/21/07, Fredrik Liden <flide..ranslate.com> wrote:
    >
    > 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:33:33 EDT