[英]mapping superclasses and subclasses with hibernate (JPA)
我正在嘗試使用休眠JPA將對象持久存儲在數據庫中。
這些對象已經具有類型層次結構,我正在嘗試使其與休眠模式一起使用。
CatalogPackage
對象具有所有重要的屬性和所有的吸氣劑。 CatalogPackageImpl
( extends CatalogPackage
)對象沒有屬性,但是大多數設置器都具有屬性。
這兩類都是非抽象的。
我們希望代碼引用CatalogPackage
對象。 但是,在初始化休眠模式時,它會抱怨CatalogPackage
類中缺少設置器。
我如何建議在構建對象時使其休眠使用子類?
我不想將所有的setter移到超類,也不想使用CatalogPackageImpl
作為實體。
盡管我看不到在CatalogPackage
定義setter方法的問題,因為可以將它們標記為private
以避免從外部環境使用它們。 因為您沒有粘貼您的實體配置,並且您說Hibernate在抱怨setter方法,所以我可以得出結論,您正在使用getter來描述您的實體映射,對嗎?
在這種情況下,Hibernate總是會抱怨,因為它假設映射到數據庫的任何事情都應該在兩個方向上進行 ,如果它可以從數據存儲中讀取數據,那么應該允許它在其中進行寫入。
因此,您有以下兩種解決方案之一:
將映射從getter方法移動到字段,並將acces類型設置為實體頂部的field:
@Access(AccessType.Field) class CatalogPackage { ... }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.