我正在通過舊數據庫創建Grails應用程序。
有一張表我想創建幾個不同的域對象(在我的例子中,Type1,Type2和Type3)。
該表是這樣的:使用GORM DSL將多個域對象映射到同一個表格
ID TYPE DESCRIPTION
1 type1 description of a type1 object
2 type1 description of another type1 object
3 type2 description of a type2 object
4 type3 description of a type3 object
...
所以想創建3個不同的結構域類,每個類包含名爲「描述」字段,並相應於一個特定的「類型」,這是因爲行表示不同的概念。
是否有任何種類的約束允許我按類型過濾行?
我的意思是,我可以這樣做:
class Type1 {
String type
String description
static mapping = {
table 'mytable'
}
static constraints = { type == 'type1' } // Is there anything like this ?
}
然後我希望Type1.list()產生類似的查詢:
SELECT type, description
FROM mytable
WHERE type = 'type1'
更新:
其實documentation說我可以使用鑑別器來實現這一點。
不過,我試圖把我的類,如下所示:
class Type1 extends BaseType {
static mapping = {
discriminator column:'type', value: 'type1'
}
}
我激活休眠SQL跟蹤,而不是看到
SELECT ... FROM mytable WHERE type = 'type1'
我看到
SELECT ... FROM mytable WHERE class = 'type1'
似乎鑑別器完全忽略了我的自定義列名稱:-(
我使用Grails 1.2.1
酷酷的偵探工作:) – 2010-03-04 22:51:16