我有这样的课:
class Apple extends Fruit {
static mapping = {
discriminator "AppleType"
}
}
有没有办法在控制器/视图中获得这个鉴别器值?
我有这样的课:
class Apple extends Fruit {
static mapping = {
discriminator "AppleType"
}
}
有没有办法在控制器/视图中获得这个鉴别器值?
您可以使用Mapping类检查域类的映射。例子:
def mapping = GrailsDomainBinder.getMapping(Apple)
println mapping.discriminator
作为 Sergio 回答的补充,GrailsDomainBinder
从 2.3 开始,该方法不再具有getMapping()
静态方法。您必须改为实例化一个GrailsDomainBinder
.
def mapping = new GrailsDomainBinder().getMapping(Apple)
println mapping.discriminator
我过去使用过这个hack。在查询鉴别器列的基类上创建派生属性。
static mapping = {
fruitType formula: "class" // discriminator column defaults to 'class'
}
String fruitType
这添加了一个fruitType 属性,每次从数据库中提取该类时都会设置该属性。
在从数据库中获取该属性之前,该属性将为空。
如果您更改您的鉴别器列,只需相应地更改公式。
static mapping = {
discriminator column: "custom_column_name"
fruitType formula: "custom_column_name"
}
String fruitType