這裏加上繼承屬性的限制就是我想要做什麼:如何在一個Grails域子類
class A {
String string
static constraints = {
string(maxSize:100)
}
}
class B extends A {
static constraints = {
string(url:true)
}
}
所以A類應該有一些約束和B應該有相同的加額外的對同一財產的限制。
我不能得到這工作,雖然我可以想像,它會與表每層次的理念衝突。
所以我試着通過引入一個帶有B類約束的Command對象來解決這個問題,這個約束可以在類B的構造函數中進行驗證。但是似乎Command對象只能在控制器中使用(grails一直說在那裏它沒有.validate()方法)。
所以我的問題是:什麼是解決這個使用Grails約束最優雅的方式(不重新實現手動驗證)?可能是...
- 切換到Table-per-Sub-Class概念?
- 以某種方式使命令對象在Domain類中工作?
- 還有其他方法嗎?
編輯:它會好起來的,我來定義子類的所有限制,重複父類的不甚至有約束的約束或在父類的。但解決方案應該適用於同一父類的多個子類(具有不同的約束)。
我不知道每一個約束將這種工作方式,因爲默認情況下繼承的類映射到同一個數據庫表。 因此,如果您的類C具有非空,對C.c的唯一約束,它將在整個表A上施加數據庫表約束 - 並且c字段將針對所有類存在,並且對於除C實例之外的任何其他類都將爲空。 – 2010-10-22 14:29:37
是的,這就是爲什麼我帶來了每個子類的表演。 – 2010-10-23 13:45:28