Java/Hibernate 使用实体上的接口
我正在使用带注释的Hibernate,我想知道以下内容是否可能。
我必须设置一系列表示可以持久化的对象的接口,以及一个主数据库类的接口,其中包含用于持久化这些对象的几个操作(...数据库的 API)。
在此之下,我必须实现这些接口,并使用Hibernate持久化它们。
例如,我将拥有:
public interface Data {
public String getSomeString();
public void setSomeString(String someString);
}
@Entity
public class HbnData implements Data, Serializable {
@Column(name = "some_string")
private String someString;
public String getSomeString() {
return this.someString;
}
public void setSomeString(String someString) {
this.someString = someString;
}
}
现在,这工作正常,某种程度上。当我想要嵌套实体时,麻烦就来了。我想要的界面非常简单:
public interface HasData {
public Data getSomeData();
public void setSomeData(Data someData);
}
但是当我实现该类时,我可以按照下面的接口进行操作,并从Hibernate收到一个错误,说它不知道类“Data”。
@Entity
public class HbnHasData implements HasData, Serializable {
@OneToOne(cascade = CascadeType.ALL)
private Data someData;
public Data getSomeData() {
return this.someData;
}
public void setSomeData(Data someData) {
this.someData = someData;
}
}
简单的更改是将类型从“Data”更改为“HbnData”,但这显然会破坏接口实现,从而使抽象变得不可能。
任何人都可以向我解释如何以一种与Hibernate一起工作的方式实现这一点?