簡體   English   中英

使用休眠(JPA)映射超類和子類

[英]mapping superclasses and subclasses with hibernate (JPA)

我正在嘗試使用休眠JPA將對象持久存儲在數據庫中。

這些對象已經具有類型層次結構,我正在嘗試使其與休眠模式一起使用。

CatalogPackage對象具有所有重要的屬性和所有的吸氣劑。 CatalogPackageImplextends CatalogPackage )對象沒有屬性,但是大多數設置器都具有屬性。

這兩類都是非抽象的。

我們希望代碼引用CatalogPackage對象。 但是,在初始化休眠模式時,它會抱怨CatalogPackage類中缺少設置器。

我如何建議在構建對象時使其休眠使用子類?

我不想將所有的setter移到超類,也不想使用CatalogPackageImpl作為實體。

盡管我看不到在CatalogPackage定義setter方法的問題,因為可以將它們標記為private以避免從外部環境使用它們。 因為您沒有粘貼您的實體配置,並且您說Hibernate在抱怨setter方法,所以我可以得出結論,您正在使用getter來描述您的實體映射,對嗎?

在這種情況下,Hibernate總是會抱怨,因為它假設映射到數據庫的任何事情都應該在兩個方向上進行 ,如果它可以從數據存儲中讀取數據,那么應該允許它在其中進行寫入。

因此,您有以下兩種解決方案之一:

  • 添加setters修飾符。
  • 將映射從getter方法移動到字段,並將acces類型設置為實體頂部的field:

     @Access(AccessType.Field) class CatalogPackage { ... } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM