首页  >  文章  >  Java  >  为什么我在 Hibernate 5.0 与 MySQL 集成中收到“org.hibernate.MappingException:未知实体”错误?

为什么我在 Hibernate 5.0 与 MySQL 集成中收到“org.hibernate.MappingException:未知实体”错误?

DDD
DDD原创
2024-11-01 21:13:02489浏览

Why am I getting

Hibernate 5:在 Hibernate-MySQL 集成中遇到“org.hibernate.MappingException:未知实体”

尝试将 Hibernate 5.0 与使用 MySQL 数据库时,用户可能会遇到错误消息“org.hibernate.MappingException:未知实体”。此问题主要影响 Hibernate 版本 5.0.0 和 5.0.1,而早期版本(例如 4.3.9)可以正常运行。

要解决此问题,必须了解 Hibernate 5 中引入的更改。在版本 4 中更早之前,Hibernate 严重依赖 StandardServiceRegistryBuilder。然而,在 Hibernate 5 中,配置 процессе 已被更改。

不正确的配置实践:

以下代码,在 Hibernate 4.3.5 中可以工作,但在 Hibernate 中失败5、举例说明错误的配置方法:

Configuration configuration = new Configuration();
configuration.configure();

ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(
    configuration.getProperties()).build();

SessionFactory sf = configuration.buildSessionFactory(sr);

在Hibernate 5中,此方法会导致在configuration.buildSessionFactory(sr)期间丢失有关实体映射的信息。

解决方案:

此问题有两种可能的解决方案:

1.标准配置文件(hibernate.cfg.xml 和 hibernate.properties):

对于标准配置文件,使用这种简单的方法来创建会话工厂:

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

2.从外部源加载属性:

如果您将属性存储在 hibernate.properties 以外的位置,请按照以下步骤操作:

  • 将属性作为资源加载:
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties("hibernate-h2.properties").build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);  
  • 从文件系统中的特定路径加载属性:
File propertiesPath = new File("some_path");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties(propertiesPath).build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);

很重要请注意,Hibernate 5 教程(1.1.6. 启动和帮助程序)中提供的示例不正确,并且未执行正确的配置。上面给出了正确的方法。

通过实施这些解决方案,用户可以有效地将 Hibernate 5 与 MySQL 集成并解决“未知实体”错误。

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

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