我正在尝试使用hibernate JPA将对象保存在数据库中。
对象已经有了类型层次结构,我试图让它与hibernate一起使用。
CatalogPackage对象具有所有重要属性和所有getter。 CatalogPackageImpl(extends CatalogPackage)对象没有属性,但大多数是setter。
@Entity
@Table(name="package")
public class CatalogPackage {
protected String mId;
public String getId() {return mId;}
}
public class CatalogPackageImpl extends CatalogPackage {
public void setId(String id) {
mId=id;
}
}
我不知道为什么会这样设置。它应该提供类似界面的设置,因此客户无法修改字段。
我们希望代码引用CatalogPackage对象。但是当试图坚持一系列CatalogPackages(其实就是下面的CatalogPackageImpls)时,hibernate说:
java.lang.IllegalArgumentException:未知实体:com.mycompany.catalog.internal.CatalogPackageImpl
如何在持久化对象时建议休眠它使用超类?
我真的不想将所有的setter移动到超类,我绝对不想使用CatalogPackageImpl作为实体。
答案 0 :(得分:0)
这样可行,除了以某种方式使CatalogPackageImpl
成为实体之外别无他法:
@MappedSuperclass
public class CatalogPackage {
protected String mId;
public String getId() {return mId;}
}
@Entity
@Table(name="package")
public class CatalogPackageImpl extends CatalogPackage {
public void setId(String id) {
mId=id;
}
}