Hibernate 5:解決「org.hibernate.MappingException:未知實體」錯誤
問題:
問題:問題: 您在嘗試將Hibernate 5.0 與MySQL 整合時遇到了「org.hibernate.MappingException:未知實體」錯誤。 Hibernate 版本 5.0.0 和 5.0.1 會出現此錯誤,但 Hibernate 4.3.9 不會出現此錯誤。
原因:此問題是由於使用 Hibernate 5 建立 SessionFactory 的方式。使用早期版本的 Hibernate 中的 Configuration().buildSessionFactory(sr) 方法不再有效,因為它會丟棄映射資訊。
解決方案:要解決此錯誤,有兩種方法:
1.簡化配置:<code class="java">SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();</code>
對於hibernate.cfg.xml 和hibernate.properties 等標準配置文件,您可以在不使用ServiceRegistry 的情況下創建SessionFactory:
2.使用StandardServiceRegistryBuilder加載屬性:如果除了hibernate.properties之外的檔案中還有屬性,則可以使用StandardServiceRegistryBuilder來載入它們:
<code class="java">ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder(). configure().loadProperties("hibernate-h2.properties").build(); SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);</code>
將屬性作為資源載入:
<code class="java">File propertiesPath = new File("some_path"); ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder(). configure().loadProperties(propertiesPath).build(); SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);</code>
從檔案系統路徑載入屬性:
以上是Hibernate 5:為什麼我會收到「org.hibernate.MappingException:未知實體」錯誤以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!