在将 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() );
此代码未正确配置实体映射。
要解决此问题,您可以使用以下方法之一正确加载实体映射:
标准配置文件:如果您有标准配置文件 hibernate.cfg.xml,请使用简化的方法和 hibernate.properties:
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
加载属性: 对于其他属性文件,使用 StandardServiceRegistryBuilder 加载属性:
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .configure().loadProperties("hibernate-h2.properties").build(); SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);
这要求 hibernate-h2.properties 文件位于类路径中。
从路径加载属性: 使用此方法从特定文件路径加载属性:
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中文网其他相关文章!