我正在旧数据库上创建一个 grails 应用程序。
有一个表,我想从中创建几个不同的域对象(在下面的示例中,Type1、Type2 和 Type3)。
表是这样的:
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个不同的域类,每个包含一个名为“description”的字段,并对应一个特定的“type”,因为行代表不同的概念。
是否有任何类型的约束允许我按类型过滤行?
我的意思是,我可以做类似的事情:
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'
更新 :
实际上文档说我可以使用鉴别器来实现这一点。
但是,我尝试将我的课程设置如下:
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