【发布时间】:2018-05-08 19:25:07
【问题描述】:
我正在尝试,但到目前为止还没有成功,在 Hibernate 中使用以下类。
@MappedSuperclass
@Embeddable
public abstract class Foo {
// atributes...
}
@Embeddable
public class Poo extends Foo {
// atributes...
}
@Entity
@Table
public class None {
// atributes...
@Embedded
private Foo foo;
// constructor
public None(Foo foo) {
this.foo = foo;
}
}
// example of save
None none = new None(Poo poo);
save(none);
Hibernate 返回:无法实例化抽象类或接口
是否可以使用 JPA 执行此操作?
【问题讨论】:
-
您是否尝试过从
Foo类中删除abstract修饰符?您的代码是说None有一个Foo,而不是Poo。如果您希望它是扩展Foo的东西,您可能需要阅读有关如何在 JPA 中进行继承。 -
也许阅读this answer 会有所帮助。具体来说,您需要一个鉴别器才能使继承工作。
-
您是否尝试从您的
@MappedSuperclass Foo抽象类中删除@Embeddable,并在您的Poo类中使用@Embedded? -
@LuayAbdulraheem 我试过了,但没有用。继续犯同样的例外。
-
@Sometimes_Confused 不使用抽象类作品。但是我使用抽象类的想法恰恰是能够使用多态性,因为我在超类中也有抽象方法。
标签: java hibernate jpa inheritance abstract-class