我收到以下休眠例外:org.hibernate.AnnotationException:上<entity>引用一個未知的實體@OneToOne或@ManyToOne
org.hibernate.AnnotationException: @OneToOne or @ManyToOne on cz.rohan.dusps.model.Switchport.konfiguracniTemplateAccess references an unknown entity: cz.rohan.dusps.model.KonfiguracniTemplate
org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:103)
org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:541)
org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:523)
org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:380)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
cz.rohan.dusps.helper.SessionFactoryHelper.initFactory(SessionFactoryHelper.java:122)
cz.rohan.dusps.helper.SessionFactoryHelper.getSessionFactory(SessionFactoryHelper.java:134)
cz.rohan.dusps.filter.HistorieZmenFilter.doFilter(HistorieZmenFilter.java:102)
cz.rohan.dusps.filter.CharsetFilter.doFilter(CharsetFilter.java:41)
已經閱讀每一個後約20所花時間與各種人的問題,可能的博客或論壇,我真的在這裏變得絕望。
這是一箇中等規模的項目。我應該提到數據庫是Postgres 9.1,我們使用建模工具生成數據庫。 Hibernate連接到數據庫但不生成它。
我在數據庫中創建了一個新實體,它被稱爲「KonfiguracniTemplate」(配置模板)。我創建了模型,控制器,表單,驗證器,.jsp,全部基本上都是從一個類似性質的現有實體1:1複製的。我現在可以使用KonfiguracniTemplate,CRUD完全可以工作。
當我從名爲Switchport的實體引用此KonfiguracniTemplate時,問題就出現了。在DB有兩者之間的關係:
- 交換機端口1:1 ... 0:N KonfiguracniTemplate(交換機端口總是引用KonfiguracniTemplate;一個KonfiguracniTemplate可以參考零次或多次)
- 交換機端口具有FK konfiguracniTemplateAccess_id爲這個關係。
在... /模型/ Switchport.java關係映射就像正在工作的所有其他關係:
@ManyToOne
@JoinColumn(nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
我曾嘗試過各種形式:
@ManyToOne
@JoinColumn(name="konfiguracnitemplateaccess_id", nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
或
@ManyToOne(targetEntity=KonfiguracniTemplate.class)
@JoinColumn(name="konfiguracnitemplateaccess_id", nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
我也檢查過:
- 兩個實體都在同一個包
- 它們都註明「@Entity」使用「進口javax.persistence.Entity;」
- 構建不產生錯誤/警告消息
- 只要在交換機端口參考被註釋掉了,一切都很好
無論我怎麼努力,我不能擺脫「引用一個未知的實體「例外。有人可以分享一個想法正在發生什麼或者如何調試這個問題?在帖子頂部的堆棧跟蹤是我在日誌中獲得的。
所有的輸入是非常感謝!
在編譯或開發之後會發生這種情況嗎?你的單元測試是否運行? – hvgotcodes
這是一個運行時異常。構建成功後,我可以訪問登錄表單,提交併獲得例外。我們不做單元測試。 – Martin
你有沒有檢查你的jar,並確保在構建之後jar中存在缺失類的類文件? – hvgotcodes