簡體   English   中英

不使用注釋參數“targetEntity”的Hibernate接口映射

[英]Hibernate interface mapping without using annotation parameter “targetEntity”

我最近試圖為我的一些hibernate映射實體引入接口,但無法弄清楚如何配置映射。

當我使用接口而沒有任何進一步的聲明時,我總是得到以下異常:

org.hibernate.MappingException: Could not determine type for: ...MyInterface 

然后當我明確定義targetEntity時,我發現一切正常:

   @OneToOne(targetEntity=InterfaceImpl.class)
   private MyInterface myInterface;

不幸的是,這個解決方案在我的情況下不起作用:我無法通過注釋定義targetEntity,因為我想將此類提取到一個不包含甚至不知道接口的最終實現的公共外部庫。

那么是否有另一種方法來聲明應該使用哪種實現,我可以在提取的庫之外使用? 在此輸入圖像描述

在抽象的@MappedSupperclass定義映射契約,然后在實現類中使用@AssociationOverride覆蓋它。

我不知道的東西與Hibernate的注解是如何工作的,但我沒有描述的類似的東西在這里

有關詳細解釋,請參閱上一篇文章。

在我們在hibernate映射文件中指定接口的意義上,基本需求是相似的,並且實現是主要在運行時使用javassist創建的類(它們不存在編譯時)。

你需要的是能夠在運行時從接口解析實現類的代碼,反之亦然,並使用hibernate tuplizer / instantiator契約作為擴展點來允許hibernate

(a)當需要從DB填充實體時創建實現實例,以及(b)在需要將實體(實現實例)存儲到DB時定位hibernate映射元數據。

暫無
暫無

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

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