繁体   English   中英

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

[英]How to get the actual instance of a domain class in 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的实际实例。

谢谢

尼米..

您必须使用如下代码:

def obj = ClassA.get( 1 )

您碰到了一个GORM陷阱,SpringSource博客上有一篇必读的文章: http : //blog.springsource.org/2010/07/28/gorm-gotchas-part-3/ (第7章)。 我建议阅读所有3篇文章! 您会明白,幕后的事情要好得多了:-)

附加信息。 默认情况下,Grails在映射类层次结构时使用“每表层次结构”策略,因此,如果要创建ClassB,它将与ClassA一样保存在同一表中,因此它们共享同一“主键”列。 这就是为什么您得到ClassB而不是ClassA的原因。 GORM基于类型列返回正确的类实例,该类型列包含信息,层次结构的哪个类存储在所需的行中。 但是,如果需要,您可以显式输入;-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM