2015-01-06 41 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來完成集成測試,你可能沒有這個功能,並且有可能在不同的環境中獲得不同的結果,或者需要找出那裏的等效語法。

另一種選擇是在您插入和更新之前添加第二列並在域類中計算其值的另一種選擇,併爲此構建常規索引。