我正在尝试实现这个JPA模型:
Owner
是Entity
。它有@Embedded
类AbstractParent
的实例。AbstractParent
为@Embeddable
。它是一个抽象类,而且是这个类
有两个孩子。孩子们是具体的班级。例外情况是:Cannot instantiate abstract class or interface: AbstractParent
似乎(1)我需要组件继承,但(2)JPA中不允许组件继承,(3)它没有在Hibernate中实现。 你能否证实(1),(2)和(3)是正确的? 如果他们是正确的,您可以提供任何建议或解决方法吗? 我使用hibernate-jpa 2.0,hibernate-core 3.5.1,hibernate-core-annotations 3.2.0
答案 0 :(得分:2)
回答问题为什么需要这个实现:这是一个例子。 数据库表有关于计算机的信息,计算机有监视器,如果监视器是LCD,那么它的参数是“像素”。如果显示器是电视,那么它的参数是“线”。所有显示器也有参数“重量” 该表的数据结构包括:id,RAM,monitor_indicator,weight,lines,pixels。
此数据结构可以在类中实现:
Computer
{id,RAM,display}
AbstractDisplay
{weight}
LCDDisplay
{pixels}继承班级AbstractDisplay
TVDisplay
{line}继承班级AbstractDisplay
基本思想是主类(所有者/计算机)嵌入另一个类(Parent / AbstractDisplay),根据嵌入类的类型,它可以有不同的参数集。
关于如何实例化嵌入式抽象类:与现在在JPA中实例化抽象类的方式相同:在上面的示例中,“monitor_indicator”表示应该使用的子类,此类字段必须存在于类Computer之前实例
答案 1 :(得分:0)
嵌入Abstract
类没有任何逻辑意义,如果它是Abstract
则无法实例化。您需要在为什么上重新构建逻辑,您认为需要嵌入Abstract
类,而不是特定的实现。