Re: Delete Rules: Cascade with Deny on reverse relationship

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Thu Jul 27 2006 - 22:44:22 EDT

  • Next message: Rashid Khan: "table row count in cayenne"

    Doesn't look like DataContextDeleteAction is smart about it:

                if (relatedObjects.size() == 0) {
                     continue;
                 }

                 // process DENY rule first...
                 if (relationship.getDeleteRule() == DeleteRule.DENY) {
                     object.setPersistenceState(oldState);

                     String message = relatedObjects.size() == 1
                             ? "1 related object"
                             : relatedObjects.size() + " related objects";
                     throw new DeleteDenyException(object,
    relationship.getName(), message);
                 }

    To handle cascade/deny combination we may need to change this code to
    check that at least one object in 'relatedObjects' collection is
    itself not deleted.

    Andrus

    On Jul 27, 2006, at 4:13 PM, Mike Kienenberger wrote:
    > If I have object Department, and a to-many relationship to Employees
    > marked Cascade, and then Employee has a to-manys relationship to
    > Departments marked Deny, will it work if I try to delete a department?
    >
    > What I want to do is deny the deletion when an Employee is a member of
    > multiple departments, but not when an Employee is a member only of the
    > department being deleted.
    >
    > (This isn't really a case of Department and Employee, but it seems
    > like a good analogy).
    >
    > Or to put it another way, does the Deny still happen if the only
    > reverse-relationship value is the cascading original object to be
    > deleted?
    >



    This archive was generated by hypermail 2.0.0 : Thu Jul 27 2006 - 22:44:43 EDT