Grails 使用id获取继承的类,但不知道类类型
我从一个基类继承了几个类。我的gsp列出了子类,所以我知道列表中每个类的类型 tablePerHierarchy为false,因此我有一个表包含所有继承的类Grails 使用id获取继承的类,但不知道类类型,grails,gorm,Grails,Gorm,我从一个基类继承了几个类。我的gsp列出了子类,所以我知道列表中每个类的类型 tablePerHierarchy为false,因此我有一个表包含所有继承的类 abstract class Base { } public class Sub1 extends Base { } public class Sub2 extends Base { } list.gsp: <g:link action="show" id="${item.id}"/> 从基中找出类,比如它的Sub2 获
abstract class Base {
}
public class Sub1 extends Base {
}
public class Sub2 extends Base {
}
list.gsp:
<g:link action="show" id="${item.id}"/>
从基中找出类,比如它的Sub2
获取真实对象:
Sub2.get(id)
是否有类似于:
这是id,根据id通过一个查询获取完全派生的类。我不确定是否正确理解了您的问题。执行
Base.get(id)
时,GORM(使用Hibernate)会自动返回实际实例,在本例中,该实例是Sub1或Sub2。您不必再次调用Sub1.get(id)
如果要检查返回的实例是Sub1还是Sub2,可以执行以下操作:
def instance = Base.get(id)
if (instance.instanceOf(Sub1))
instance.doSub1Operation()
else if (instance.instanceOf(Sub2))
instance.doSub2Operation
else
throw new RuntimeException("Unknown instance type")
我不确定我是否正确理解了你的问题。执行
Base.get(id)
时,GORM(使用Hibernate)会自动返回实际实例,在本例中,该实例是Sub1或Sub2。您不必再次调用Sub1.get(id)
如果要检查返回的实例是Sub1还是Sub2,可以执行以下操作:
def instance = Base.get(id)
if (instance.instanceOf(Sub1))
instance.doSub1Operation()
else if (instance.instanceOf(Sub2))
instance.doSub2Operation
else
throw new RuntimeException("Unknown instance type")