Вы можете использовать пользовательский валидатор. При использовании двухпараметрической версии первое - это проверяемое значение, а второе - экземпляр класса домена. Вы можете обратиться к другим свойствам через параметр 'obj':
class Person {
...
static constraints = {
name()
civilStatus inList:['Single','Married','Divorced','Widowed']
partnerOrSpouse validator: { val, obj ->
if (obj.civilStatus == 'Single') {
return 'some.error.code'
}
}
}
}