[英]handling superclasses and subclasses with Hibernate JPA
我正在嘗試使用休眠JPA將對象持久存儲在數據庫中。
這些對象已經具有類型層次結構,我正在嘗試使其與休眠模式一起使用。
CatalogPackage對象具有所有重要的屬性和所有的吸氣劑。 CatalogPackageImpl(擴展CatalogPackage)對象沒有屬性,但是大多數設置器。
@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作為實體。
這將起作用,實際上除了使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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.