GORM多态性中的抽象类

时间:2016-02-25 13:04:55

标签: hibernate grails inheritance polymorphism gorm

我正在开发Grails项目,Grails版本:2.2.0。 我有这些课程:

public abstract class A {}
public class B extends A {}
public class C extends A {}

现在,一切都很好 A级在:src / groovy所以在DB中我有两个表B& C。 现在我添加一个新类:

public class D{
A aa
}

现在不再有效了,因为hibernate不认识A型。 一种解决方案是省略抽象术语,但允许实例化A对象,这是不对的! 有没有人知道如何解决这个问题? 谢谢

1 个答案:

答案 0 :(得分:0)

问题在于:GORM / Hibernate 必须能够实例化域类属性(当然,除了瞬态之外)。因此,属性不能是抽象类型。接口因同样的原因不起作用。

为了保持继承,不幸的是,您必须这样做不太正确的事情:删除抽象并使function launchAction($sizeData, $campaignId) { return $this->render( 'UserBundle:Test:test.html.twig', array('campaignId' => $campaign->getId()) ); } 成为域类。