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