首页  >  文章  >  Java  >  与 MySQL 集成时如何修复 Hibernate 5 中的“MappingException: Unknown Entity”?

与 MySQL 集成时如何修复 Hibernate 5 中的“MappingException: Unknown Entity”?

Barbara Streisand
Barbara Streisand原创
2024-10-31 02:50:31641浏览

How to Fix

Hibernate 5: MappingException: Unknown Entity

在 Hibernate 5 中,尝试时可能会发生 org.hibernate.MappingException: UnknownEntity 错误与 MySQL 集成。此问题特定于 Hibernate 5.0.0 和 5.0.1 版本,并在后续版本中得到解决。

原因

该错误源于 Hibernate 5 的更改行为。在早期版本中,即使在构建 ServiceRegistry 之后,配置信息仍保留在 Configuration 中。但是,在 Hibernate 5 中,当调用 configuration.buildSessionFactory(sr) 时,配置会丢失此信息。

修复

1。标准配置文件:

如果使用标准 hibernate.cfg.xml 和 hibernate.properties 文件,则直接创建会话工厂:

<code class="java">SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();</code>

2.加载属性:

如果属性存储在不同的文件中,请使用 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>

3.使用 Fluent Hibernate 实用程序:

有关使用此方法的完整示例,请参阅 GitHub 上的 Fluent-hibernate-mysql 项目。

4.避免不正确的 Hibernate 5 教程建议:

Hibernate 5 教程中提供的错误代码片段:

<code class="java">return new Configuration().configure().buildSessionFactory(
                new StandardServiceRegistryBuilder().build() );</code>

未执行正确的配置,应避免。

以上是与 MySQL 集成时如何修复 Hibernate 5 中的“MappingException: Unknown Entity”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn