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?