Re: Exception Deleting DataObject with to-many relationship

From: Joe Baldwin (jfbaldwi..arthlink.net)
Date: Fri Nov 27 2009 - 11:34:45 EST

  • Next message: Lachlan Deck: "Re: delete new --> transient?"

    Michael,

    > I was just trying to figure out where the salesOrderList property was in your model, per this error:

    Good point. There is a SalesOrderList Relationship defined for the the Customer record (with a reverse relationship of Customer).

    I checked the ObjEntity config for the Customer and here is the entry

            Name: salesOrderList
            Target: SalesOrder
            Sematics: to many, list
            Delete Rule: Nullify
            Used For Locking: not checked

    I set the Delete rule to "Nullify" thinking that there may come a time to delete the Customer record while retaining the SalesOrder record. (Also I noticed that the Delete Rule for the SaleOrder - orderitemList is set to "Cascade", but MySQL doesn't seem to want to cascade delete the OrderItems when I delete a SalesOrder).

    I would expect from my understanding of the Modeler is that when a Customer is deleted via Cayenne, that the SalesOrder - customerOID would be set to null.

    Thanks,
    Joe

    On Nov 27, 2009, at 10:38 AM, Michael Gentry wrote:

    > Hi Joe,
    >
    > I was just trying to figure out where the salesOrderList property was
    > in your model, per this error:
    >
    > Error unsetting to-many DataObject property: salesOrderList
    >
    > I can't tell if that is in SalesOrder or OrderItem and it doesn't seem
    > to match salesOrder.getOrderItemList().
    >
    > Thanks,
    >
    > mrg
    >
    >
    > On Fri, Nov 27, 2009 at 10:29 AM, Joe Baldwin <jfbaldwi..arthlink.net> wrote:
    >> Michael,
    >>
    >>
    >>> Is childList the same as salesOrderList?
    >>
    >> Sorry, I am not sure what you mean by "the same".
    >>
    >> If you are asking is the entity self-referential, then the answer is no. The parent is named "SalesOrder" and the child is "OrderItem". It is a simple "to-many" relationship (one sales-order to many order-items).
    >>
    >> More info:
    >> I did some more testing and found that the problem is associated with older SalesOrders stored in the production server and seems to be creating an Exception on
    >>
    >> objectContext.deleteObjects(salesOrder.getOrderItemList())
    >>
    >> However, when I create a SalesOrder with new data, I cannot duplicate the Exception condition. So perhaps the Exception is somehow associated with the older data.
    >>
    >> Also, I wrote my own "deleteObjects" method (for debugging purposes) and it appears to work fine with the new SalesOrders or seemingly as well the ObjectContext version and generated the same Exception with the older data.
    >>
    >> The complication with debugging this issue is that the data is on the production server and once I attempt a test (even though it claims that it failed) the data is actually deleted, so I can't duplicate the test once all the data is deleted.
    >>
    >> Thanks,
    >> Joe
    >>
    >>
    >>
    >> On Nov 27, 2009, at 10:03 AM, Michael Gentry wrote:
    >>
    >>> Is childList the same as salesOrderList?
    >>>
    >>>
    >>> On Thu, Nov 26, 2009 at 6:29 PM, Joe Baldwin <jfbaldwi..arthlink.net> wrote:
    >>>> I am getting an odd exception when I attempt to delete a DataObject with a "to-many" (aka child list).
    >>>>
    >>>> Here is the pseudo code:
    >>>>
    >>>> 1. deleteObjects(parent.getChildList())
    >>>> 2. deleteObject(parent)
    >>>> 3. objectContext.commitChanges()
    >>>>
    >>>> on Exception
    >>>> objectcontext.rollbackChanges()
    >>>>
    >>>>
    >>>> It is very odd but I am getting the following error:
    >>>>
    >>>> org.apache.cayenne.reflect.PropertyException:
    >>>> [v.3.0B1 Nov 03 2009 19:16:06]
    >>>> Error unsetting to-many DataObject property: salesOrderList
    >>>>
    >>>> But it is deleting all the associated database rows.
    >>>>
    >>>> Am I missing a step in the delete procedure?
    >>>>
    >>>> thanks,
    >>>> Joe
    >>>>
    >>>>
    >>
    >>



    This archive was generated by hypermail 2.0.0 : Fri Nov 27 2009 - 11:35:27 EST