Home  >  Article  >  Java  >  Why am I getting \"org.hibernate.MappingException: Unknown entity\" Error in Hibernate 5.0 Integration with MySQL?

Why am I getting \"org.hibernate.MappingException: Unknown entity\" Error in Hibernate 5.0 Integration with MySQL?

DDD
DDDOriginal
2024-11-01 21:13:02489browse

Why am I getting

Hibernate 5: Encountering "org.hibernate.MappingException: Unknown entity" in Hibernate-MySQL Integration

When attempting to integrate Hibernate 5.0 with a MySQL database, users may encounter the error message "org.hibernate.MappingException: Unknown entity." This issue predominantly affects Hibernate versions 5.0.0 and 5.0.1, while earlier versions such as 4.3.9 function correctly.

To address this problem, it's essential to understand the changes introduced in Hibernate 5. In versions 4 and earlier, Hibernate heavily relied on StandardServiceRegistryBuilder. However, in Hibernate 5, the configuration процессе has been altered.

Incorrect Configuration Practice:

The following code, which works in Hibernate 4.3.5 but fails in Hibernate 5, exemplifies the incorrect configuration approach:

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

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

SessionFactory sf = configuration.buildSessionFactory(sr);

In Hibernate 5, this method causes information about entity mappings to be lost during configuration.buildSessionFactory(sr).

Solution:

There are two potential solutions to this issue:

1. Standard Configuration Files (hibernate.cfg.xml and hibernate.properties):

For standard configuration files, use this straightforward approach to create the session factory:

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

2. Loading Properties from External Sources:

If you have properties stored in a location other than hibernate.properties, follow these steps:

  • Load properties as a resource:
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties("hibernate-h2.properties").build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);  
  • Load properties from a specific path in the file system:
File propertiesPath = new File("some_path");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties(propertiesPath).build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);

It's important to note that the example provided in the Hibernate 5 tutorial (1.1.6. Startup and helpers) is incorrect and does not perform proper configuration. The correct method is given above.

By implementing these solutions, users can effectively integrate Hibernate 5 with MySQL and resolve the "Unknown entity" error.

The above is the detailed content of Why am I getting \"org.hibernate.MappingException: Unknown entity\" Error in Hibernate 5.0 Integration with MySQL?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn