如何在grails中获取域类的实际实例?

时间:2013-02-08 11:13:21

标签: grails

我有两个类ClassA和ClassB

class ClassA{
    String userName
    String passwd

    .....
}

class ClassB extends ClassA{
    String address_line1
    String address_line2

    .....
}

如果我正在查询

ClassA obj = ClassA.get(1)

我正在获取ClassB的实例。我如何获得ClassA的实际实例。

由于

Nimmy ..

1 个答案:

答案 0 :(得分:0)

你必须使用这样的代码:

def obj = ClassA.get( 1 )

你遇到了一个GORM问题,SpringSource博客有一篇必读文章:http://blog.springsource.org/2010/07/28/gorm-gotchas-part-3/(章节代理人)。我建议阅读所有3篇文章!你会明白,在幕后会发生什么变得更好: - )

其他信息。默认情况下,Grails在映射类层次结构时使用“每个表的层次结构”策略,因此如果您正在创建ClassB,它将保存在与ClassA相同的表中,因此它们共享相同的主键列。这就是为什么你得到ClassB而不是ClassA。 GORM根据类型列返回正确的类实例,该列包含信息,层次结构的类存储在您想要的行中。但是如果你愿意,你可以明确地重新输入; - )