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 中,Hibernate 读取其配置的方式发生变化导致了此错误。具体来说,使用 StandardServiceRegistryBuilder 构造 SessionFactory 时,无法正确应用从 hibernate.cfg.xml 读取的配置信息。
解决方案
要解决此错误,有有几种需要考虑的方法:
使用基本配置方法
对于更简单的解决方案,请避免使用 StandardServiceRegistryBuilder,而是直接从 Configuration 对象创建会话工厂:
<code class="java">SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();</code>
加载属性
如果您在 hibernate.properties 之外定义了其他属性,则可以使用 StandardServiceRegistryBuilder 加载它们:
<code class="java">ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .configure() .loadProperties("hibernate-h2.properties") .build(); SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);</code>
使用 Fluent-Hibernate
您还可以利用 Fluent-hibernate 库获得更方便的方法,如 GitHub 项目“fluent-hibernate-mysql”中所示。
其他注意事项
请注意,第 1.1.6 节中的 Hibernate 5 教程示例是不正确的。构建 SessionFactory 时无法加载正确的配置,导致映射问题。
以上是如何使用 MySQL 修复 Hibernate 5 中的'org.hibernate.MappingException:未知实体”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!