首頁  >  文章  >  Java  >  Hibernate 5:為什麼我會收到「org.hibernate.MappingException:未知實體」錯誤以及如何修復它?

Hibernate 5:為什麼我會收到「org.hibernate.MappingException:未知實體」錯誤以及如何修復它?

Barbara Streisand
Barbara Streisand原創
2024-10-28 16:21:02143瀏覽

  Hibernate 5: Why am I Getting the

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.0.0 和 5.0.1 。對於 Hibernate 5.1 及更高版本,原始配置方法 Configuration().buildSessionFactory(sr) 按預期工作。

以上是Hibernate 5:為什麼我會收到「org.hibernate.MappingException:未知實體」錯誤以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn