Maison > base de données > tutoriel mysql > Erreur Hibernate 5 « Entité inconnue » : comment configurer correctement SessionFactory pour le mappage d'entités ?

Erreur Hibernate 5 « Entité inconnue » : comment configurer correctement SessionFactory pour le mappage d'entités ?

Linda Hamilton
Libérer: 2024-12-15 03:45:23
original
439 Les gens l'ont consulté

Hibernate 5

Hibernate 5 : résolution de l'erreur « Entité inconnue » lors de l'intégration

Lors de la tentative d'intégration d'Hibernate 5.0 avec MySQL, de nombreux développeurs rencontrent le message d'erreur "org.hibernate.MappingException : entité inconnue." Ce problème survient spécifiquement avec les versions 5.0.0 et 5.0.1 d'Hibernate, alors que les versions précédentes telles que la 4.3.9 fonctionnent correctement.

Définition du problème

L'"entité inconnue" " L'erreur se produit lorsqu'Hibernate ne parvient pas à reconnaître la classe annotée en tant qu'entité. Cela peut se produire si les métadonnées de mappage de la classe ne sont pas correctement configurées ou ajoutées à la configuration Hibernate.

Détails de configuration

Les dépendances Maven fournies et hibernate.cfg. La configuration XML semble être correcte. La classe User est également annotée en tant qu'entité et a été mappée à la table de base de données "User_table".

Cause et solution

La cause première de ce problème réside dans le processus de création de SessionFactory dans la classe HibernateMain. Dans Hibernate 5, le code suivant est utilisé pour configurer et construire SessionFactory :

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

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

SessionFactory sf = configuration.buildSessionFactory(sr);
Copier après la connexion

Le problème survient car l'utilisation de configuration.buildSessionFactory(sr) dans Hibernate 5 entraîne la perte des informations de mappage obtenues en appelant la configuration. configuration.configure(). Par conséquent, Hibernate est incapable de reconnaître la classe User comme une entité annotée.

Solution

Pour résoudre ce problème, il existe deux approches :

Utilisation des fichiers de configuration standard (hibernate.cfg.xml et hibernate.properties)

Si vous utilisez des fichiers de configuration standard, vous pouvez créer SessionFactory sans utiliser ServiceRegistry.

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Copier après la connexion

Chargement des propriétés

Si vous avez des propriétés dans un fichier séparé, vous pouvez les charger et créer la SessionFactory en utilisant StandardServiceRegistryBuilder.

Chargement des propriétés en tant que ressource

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties("hibernate-h2.properties").build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);
Copier après la connexion

Chargement des propriétés à partir d'un chemin

File propertiesPath = new File("some_path");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties(propertiesPath).build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);
Copier après la connexion

Notes supplémentaires

  • L'exemple de tutoriel dans la documentation Hibernate 5 (1.1.6 Démarrage et assistants) fournit un exemple incorrect qui n'effectue pas une configuration correcte.
  • L'utilisation d'un code incorrect peut entraîner l'erreur « Entité inconnue ».

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal