Grails Domain - 复合唯一索引

通常都有这样的业务,父对象唯一,子对象在其父对象的范围内唯一。如,同一个公司内的员工名称必须是唯一的(这里假设即使重名,也用编号区分),但不同公司的员工可以重名。

Grails很轻松就能实现复合唯一索引的例子
name(blank: false, unique: 'company')

相应的,在数据库会出现如下定义
UNIQUE KEY `company_id` (`company_id`,`name`),


之前,我没查到这个功能,还用了很笨的自定义验证去实现。。。

name(blank: false, validator: { val, obj ->
//for one company, employee cannot have same name
//IdNotEqual for update case
//todo 有没有复合唯一索引呀。。。
def e = Employee.findByNameAndCompanyAndIdNotEqual(val, obj.company, obj.id)
if (e) {
return false
} else {
return true
}
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值