【问题标题】:Grails unique constraint on year field onlyGrails 仅对年份字段的唯一约束
【发布时间】:2015-01-06 16:37:30
【问题描述】:
说,Event 域类具有 eventDate 属性。此 eventDate 有一个唯一约束,因此事件必须每年或每月唯一。如何在 GORM 中指定这个?
class Event{
String name
Date eventDate
static constraints{
eventDate() //----->unique per year or say month
}
}
【问题讨论】:
标签:
grails
grails-orm
grails-domain-class
【解决方案1】:
你不能。您将需要基于函数的索引之类的东西,该索引基于列值的计算来构建索引。这是supported in Oracle 和其他一些数据库,但没有标准语法,GORM 也不支持。
当然,您可以为您在迁移脚本中使用的数据库显式执行此操作,例如当使用database-migration 插件时,但这将在数据库中完成,并且域类中不会有任何内容表明它正在被使用。如果你使用 H2 做集成测试,你要么没有这个特性,在不同的环境中得到不同的结果,要么必须找出等效的语法。
另一个选项是一个小的非规范化,您添加第二列并在插入和更新之前在域类中计算其值,并在其上构建常规索引。