[英]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.