我有一个这样的课程:
class Apple extends Fruit {
static mapping = {
discriminator "AppleType"
}
}
有没有办法在控制器/视图中获得此鉴别器值?
答案 0 :(得分:3)
您可以使用Mapping类检查域类的映射。例如:
def mapping = GrailsDomainBinder.getMapping(Apple)
println mapping.discriminator
答案 1 :(得分:1)
作为对Sergio的回答的补充,GrailsDomainBinder
从2.3开始,不再将getMapping()
方法作为静态方法。您必须改为实例化GrailsDomainBinder
。
def mapping = new GrailsDomainBinder().getMapping(Apple)
println mapping.discriminator
答案 2 :(得分:1)
我过去曾经使用过这种黑客手段。在查询discriminator列的基类上创建一个派生属性。
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