Hibernate 5:解決整合過程中的「未知實體」錯誤
在嘗試將Hibernate 5.0 與MySQL 整合時,許多開發人員遇到錯誤訊息「org.hibernate.MappingException:未知實體。」此問題特別出現在Hibernate 版本5.0.0 和 5.0.1 中,而先前的版本(例如 4.3.9)可以正常運作。
問題定義
「未知實體」當 Hibernate 無法辨識註解為實體的類別時,會發生錯誤。如果類別的映射元資料未正確配置或新增至 Hibernate 配置中,則可能會發生這種情況。
設定詳細資訊
提供的 Maven 依賴項和 hibernate.cfg。 xml配置看起來是正確的。 User 類別也被註解為實體,並已對應到資料庫表格「User_table」。
原因及解決方案
這個問題的根本原因在於HibernateMain類中創建SessionFactory的過程。在Hibernate 5中,使用以下程式碼來設定和建構SessionFactory:
問題的出現是因為在Hibernate 5中使用configuration.buildSessionFactory(sr)會導致設定遺失透過呼叫獲得的對應資訊配置.config()。因此,Hibernate 無法將 User 類別識別為帶有註釋的實體。
解決方案
要解決此問題,有兩種方法:
使用標準設定檔(hibernate.cfg.xml和hibernate.properties)
如果您使用標準配置文件,則可以在不使用 ServiceRegistry 的情況下建立 SessionFactory。
載入屬性
如果您在單獨的檔案中擁有屬性,則可以載入它們並使用下列指令建置 SessionFactory StandardServiceRegistryBuilder。
將屬性作為資源載入
從路徑載入屬性
以上是Hibernate 5「未知實體」錯誤:如何正確設定 SessionFactory 進行實體對應?的詳細內容。更多資訊請關注PHP中文網其他相關文章!