2015-01-06 39 views
0

说一个Event域类具有eventDate属性。这个eventDate有一个唯一的约束条件,例如每年或每个月的事件必须是唯一的。如何在GORM中指定?仅限于年份字段的Grails唯一约束

class Event{ 
    String name 
    Date eventDate 

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

} 

回答

0

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

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

另一种选择是在您插入和更新之前添加第二列并在域类中计算其值的另一种选择,并为此构建常规索引。