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:
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);
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!