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.