只有年份字段的Grails唯一约束

时间:2015-01-06 03:51:44

标签: grails gorm grails-domain-class

假设,Event域类具有eventDate属性。此eventDate存在唯一约束,因此事件必须是每年或每月唯一。如何在GORM中指定它?

class Event{
   String name
   Date eventDate

  static constraints{    
      eventDate() //----->unique per year or say month
  }

}

1 个答案:

答案 0 :(得分:0)

你不能。您需要一些基于函数的索引,它可以根据列值的计算来构建索引。这是supported in Oracle和其他一些数据库,但它没有标准语法,也不支持GORM。

当然,您可以为您在迁移脚本中使用的数据库明确执行此操作,例如:当使用database-migration插件时,但是这将在数据库中完成,并且域类中的任何内容都不会表明它正被使用。如果你使用H2进行集成测试,你可能没有这个功能,并且有可能在不同的环境中获得不同的结果,或者必须找出那里的等效语法。

另一个选项是一个小的非规范化,你可以在插入和更新之前添加第二列并在域类中计算它的值,并在其上构建一个常规索引。