我试图使用hibernate在具体类中保存抽象类的成员:
Concete类论坛:
public class CForum extends AForum {
@OneToOne (cascade=CascadeType.ALL,fetch=FetchType.EAGER)
private APolicy _policy; // abstract class member
Apolicy定义如下:
@Entity
@Table(name="POLICIES")
public abstract class APolicy {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
protected int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
APolicy有几个扩展它的具体类。 问题是如果我尝试从数据库加载我发现以下错误:
Error performing load command : org.hibernate.InstantiationException: Cannot instantiate abstract class or interface: : policy.APolicy
如果我在论坛中更改_policy的类型以保存具体的Policy类,那么我可以正确加载,但是我失去了抽象,这允许我更改策略(更改论坛之间的实现)。
有没有办法保持抽象并仍能正确加载数据库?