我正在尝试确保以下实体只有一行记录:
class CreditType {
String name
String external_id
Boolean usedForWaivedFee = Boolean.FALSE // default to false
static hasMany = [credits: Credit]
static constraints = {
external_id unique: true
name unique: true
}
}
或者换句话说,我试图确保只有一行“usedForWaivedFee”是真的。
我最好的想法是:禁区中的自定义验证器循环遍历所有当前的CreditType并确保没有任何现有的验证器。
思想?
有什么建议吗?
答案 0 :(得分:0)
您可以在自定义验证程序中使用countBy
方法,而不是遍历所有实例。例如,您可以使用以下自定义验证器
static constraints = {
usedForWaivedFee validator: { val, obj ->
if (val) {
if (CreditType.countByUsedForWaivedFee(Boolean.TRUE)) {
return false
}
}
return true
}
}