簡體   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