Hibernate 5 : Résolution de l'erreur « org.hibernate.MappingException : entité inconnue »
Introduction
En s'efforçant d'intégrer Hibernate 5.0 à MySQL, les développeurs tombent souvent sur le problème déroutant message d'erreur "org.hibernate.MappingException : entité inconnue." Ce problème provient de divergences dans la configuration entre Hibernate 4.3.9 et 5.0.0.
Cause première
Dans Hibernate 5, la méthode configuration.buildSessionFactory(sr) fait perdre à la configuration des informations sur les mappages d'entités configurés via configuration.configure(). Par conséquent, Hibernate est incapable de reconnaître les classes persistantes.
Solution
Pour remédier à ce problème, modifiez le code responsable de la création de la fabrique de sessions :
// Incorrect approach (for Hibernate 5) SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(sr); // Correct approach SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Options supplémentaires
1. Chargement des propriétés
Si les propriétés sont stockées dans un emplacement autre que celui par défaut, utilisez StandardServiceRegistryBuilder pour les charger :
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .configure() .loadProperties("hibernate-<database>.properties") .build(); SessionFactory sessionFactory = new Configuration().buildSessionFactory(serviceRegistry);
2. Correction du didacticiel Hibernate 5
Le didacticiel Hibernate 5 contient un exemple erroné dans la section 1.1.6 :
// Incorrect code from tutorial return new Configuration().configure().buildSessionFactory( new StandardServiceRegistryBuilder().build() );
Remplacez ce code incorrect par la bonne approche :
// Correct code return new Configuration().configure().buildSessionFactory();
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!