Re: Delete query not generating as expected

From: Michael Lepine (mikelepin..mail.com)
Date: Sat Apr 07 2007 - 14:17:41 EDT

  • Next message: Andrus Adamchik: "Re: Netbeans and cayenne"

    Jackpot! That was it. Can't believe I mixed that up. Thank you so much.

    On 4/7/07, Michael Gentry <blacknex..mail.com> wrote:
    >
    > It looks like you are setting the persistence state manually to
    > DELETED. You shouldn't really need to ever modify the persistence
    > state yourself (Cayenne manages it), although sometimes it is useful
    > to get the state. Instead, you need to tell the DataContext to delete
    > the object -- just like you tell the DataContext to create new objects
    > and to perform queries.
    >
    > Try changing:
    >
    > answer.setPersistenceState(PersistenceState.DELETED);
    >
    > to:
    >
    > dataContext.deleteObject(answer);
    >
    > /dev/mrg
    >
    >
    > On 4/7/07, Michael Lepine <mikelepin..mail.com> wrote:
    > > I'm experiencing something confusing when committing changes with a
    > > DataContext and objects to be deleted. I have a list of
    > CayenneDataObjects
    > > that I'm either updating or deleting depending on parameters set in a
    > web
    > > client. I've included the code below.
    > >
    > > When I debug the code, I can see the PersistanceState of the objects.
    > > Initially, the PersistanceState is COMMITTED. After the for loop, the
    > > objects that did have a delete flag set, do have a PersistanceState of
    > > DELETED (as expected). So, when the DataContext.commitChanges() method
    > > executes, it only generates and runs the update query. It does not
    > generate
    > > the delete query as I'd expect it to. After the commitChanges()
    > executes,
    > > the objects that had a PersistanceState of DELETED now have a
    > > PersistanceState of TRANSIENT, and obviously, the records still exist in
    > the
    > > database.
    > >
    > > Does anyone have any ideas that I could try? This is driving me crazy.
    > I'm
    > > sure I'm missing something very simple.
    > >
    > > Thanks for any help you can offer.
    > >
    > >
    > > // MerchElementSupportedAnswer is a subclass of CayenneDataObject
    > > *for* (MerchElementSupportedAnswer answer : answers) {
    > >
    > > // if data for answer was deleted, delete record
    > >
    > > * if* (answer.isDeleteFlag()) {
    > >
    > > answer.setPersistenceState(PersistenceState.*DELETED*);
    > >
    > > * continue*;
    > >
    > > }
    > >
    > > answer.setToMerchElementDefinitions
    > (getElementDefinition(dataContext));
    > >
    > > answer.setLastUpdatedDate(lastUpdatedDate);
    > >
    > > }
    > >
    > > dataContext.commitChanges();
    > >
    >



    This archive was generated by hypermail 2.0.0 : Sat Apr 07 2007 - 14:18:11 EDT