首页 > Java > java教程 > 正文

为什么我在使用 MySQL 的 Hibernate 5 中收到'org.hibernate.MappingException:未知实体”?

Mary-Kate Olsen
发布: 2024-10-29 16:35:02
原创
1022 人浏览过

Why am I Getting

Hibernate 5:理解“org.hibernate.MappingException: Unknown Entity”

在将 Hibernate 5.0 与 MySQL 集成时,开发人员可能会遇到错误消息“org.hibernate.MappingException: Unknown Entity”。 MappingException:未知实体。”此问题在 Hibernate 5.0.0 和 5.0.1 中出现,但在 Hibernate 4.3.9 中不会出现。

问题分析

要解决此错误,必须了解其发生的原因。在 Hibernate 5 中,与以前的版本不同,默认配置过程不会自动加载实体映射。这意味着当调用configuration.buildSessionFactory(sr)时,它缺少有关映射实体的信息。

不正确的Hibernate 5教程:

Hibernate 5教程提供了一个不正确的导致此错误的代码示例:

return new Configuration().configure().buildSessionFactory(
                new StandardServiceRegistryBuilder().build() );
登录后复制

此代码未正确配置实体映射。

解决方案:加载实体映射

要解决此问题,您可以使用以下方法之一正确加载实体映射:

  1. 标准配置文件:如果您有标准配置文件 hibernate.cfg.xml,请使用简化的方法和 hibernate.properties:

    SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
    登录后复制
  2. 加载属性: 对于其他属性文件,使用 StandardServiceRegistryBuilder 加载属性:

    ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
    .configure().loadProperties("hibernate-h2.properties").build();
    SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);  
    登录后复制

    这要求 hibernate-h2.properties 文件位于类路径中。

  3. 从路径加载属性: 使用此方法从特定文件路径加载属性:

    File propertiesPath = new File("some_path");
    ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
    .configure().loadProperties(propertiesPath).build();
    SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);
    登录后复制

结论

通过使用这些解决方案之一来加载实体映射,您可以解决将 Hibernate 5.0 与 MySQL 集成时出现的“未知实体”错误。请记住,应避免 Hibernate 5 教程中的错误代码示例。

以上是为什么我在使用 MySQL 的 Hibernate 5 中收到'org.hibernate.MappingException:未知实体”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板