繁体   English   中英

使用Hibernate JPA处理超类和子类

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM