Product Information > JADE Error Messages and System Messages > 2 through 1299 - JADE Object Manager Errors > 1278 - Change in a constraint removed all inverses

1278   Change in a constraint removed all inverses

Cause

This error occurs if the last inverse on a reference has been removed as a result of changing a condition.

Where a condition expression can act as a constraint on an object reference, changing a condition can result in an inverse being removed, where the changed condition no longer applies to any of the constraints on the reference. For example, the following references are defined on class Company with inverse myCompany.

allCasual of type Employee, where isCasual

allPermanent of type Employee, where isPermanent

The Employee class has the property hours, with the following conditions.

isCasual(): Boolean condition;
begin
    return hours <= 20;
end;

isPermanent(): Boolean condition;
begin
    return hours >= 38;
end;

This error occurs when the hours attribute is assigned a value greater than 20 but less than 38. Since neither condition applies (they are both false), the inverse relationship is removed.

Action

Change your application code to make sure that at least one condition is set, or apply a catch-all condition to the inverse reference (for example, isOnPayroll).

Alternatively, if an inverse is not required for automatic maintenance of the relationship, you can check the Inverse Not Required check box on the Define Reference dialog used to prevent the exception occurring.