0

我有两个班级 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 的实际实例。

谢谢

尼米..

4

1 回答 1

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 根据类型列返回正确的类实例,其中包含信息,层次结构的哪个类存储在您想要的行中。但是如果你愿意,你可以明确地重新输入;-)

于 2013-02-10T17:59:18.230 回答