在Grails中,我如何获得鉴别器值?

时间:2012-11-30 04:27:00

标签: grails grails-2.0 discriminator

我有一个这样的课程:

class Apple extends Fruit {
    static mapping = {
        discriminator "AppleType"
    }
}

有没有办法在控制器/视图中获得此鉴别器值?

3 个答案:

答案 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