我有一个像这样的域三域类:
Tasks.groovy
class Tasks {
static belongsTo = [ user : User ]
//other fields
Date startDate
Date endDate
}
User.groovy
class User {
//relationships. . . .
static belongsTo = [ company : Company, role : Role, resource : Resource]
static hasMany = [ holidays : Holiday, tasks : Tasks]
//other fields
}
Holiday.groovy
class Holiday {
static belongsTo = User
Date startDate
Date endDate
//other fields
}
现在,当我创建
Tasks
实例时,我想设置一个约束,以使Tasks
startDate
和endDate
不属于User
的Holiday
的startDate
和endDate
。并抛出并出错(如果有)。我想要一种将此约束施加到域类本身上的方法(即
Tasks
上)。有可能这样做吗?
提前致谢。
最佳答案
您可以使用自定义验证程序来完成此操作。
startDate(validator: {val, obj->
obj.user.holidays.every{holiday-> val <= holiday.startDate || val >= holiday.endDate }
})
您可以将自定义验证逻辑封装为闭包。您还必须为endDate添加类似的逻辑。