Grails仅对年份字段具有唯一约束

Grails仅对年份字段具有唯一约束,grails,gorm,grails-domain-class,Grails,Gorm,Grails Domain Class,比如说,Event域类具有eventDate属性。此eventDate上存在唯一约束,因此事件每年或每月都必须是唯一的。如何在GORM中指定这一点 class Event{ String name Date eventDate static constraints{ eventDate() //----->unique per year or say month } } 你不能。您需要一个类似于基于函数的索引的东西,该索引基于列值的计算来构建索

比如说,
Event
域类具有
eventDate
属性。此eventDate上存在唯一约束,因此事件每年或每月都必须是唯一的。如何在GORM中指定这一点

class Event{
   String name
   Date eventDate

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

}

你不能。您需要一个类似于基于函数的索引的东西,该索引基于列值的计算来构建索引。这是和其他一些数据库,但没有标准语法,GORM也不支持

当然,您可以对迁移脚本中使用的数据库显式执行此操作,例如,在使用插件时,但这将在数据库中执行,并且在域类中不会有任何内容指示正在使用它。如果您使用H2进行集成测试,那么您要么没有此功能,可能会在不同的环境中得到不同的结果,要么必须找出等效的语法

另一种选择是一种小型的非规范化,在插入和更新之前,在域类中添加第二列并计算其值,然后在此基础上构建常规索引