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中文网其他相关文章!