Grails 的 constraints 可以繼承嗎?

我們都知道 Grails 使用 GORM 項目來定義實體類(Domain Class),並且可以給 Domain Class 添加約束,例如字段是否可null,最大長度多少等等,還可以自定義 validator 來實現對特定規則的檢查。

同時 GORM 支持 Domain Class 的繼承,默認情況下會用 hierarchy in table 的方式實現,就是將所有類都用一張數據庫表來定義,通過 class 字段區分記錄(代表一個實體對象)所屬的類。

那麼能否在父類和子類中定義不同的 constraints ,讓約束只針對特定的類生效呢?具體來說就是父類中定義的約束,在子類中也有效,但在子類中定義的約束對父類無效,對兄弟類也無效。

這需要試驗,更進一步查看 GORM 的實現代碼來確認。

通過實驗,發現 constraints 是可以繼承的,父類中寫父類屬性的 constraints,子類中不要寫以免覆蓋父類的定義;
子類中寫子類特有的屬性的constraints,這樣分工即可。mapping 也是一樣的編寫方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章