Maison  >  Article  >  Java  >  Hibernate 5 : Pourquoi est-ce que j'obtiens l'erreur « org.hibernate.MappingException : entité inconnue » et comment puis-je la corriger ?

Hibernate 5 : Pourquoi est-ce que j'obtiens l'erreur « org.hibernate.MappingException : entité inconnue » et comment puis-je la corriger ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-28 16:21:02143parcourir

  Hibernate 5: Why am I Getting the

Hibernate 5 : Résolution de l'erreur « org.hibernate.MappingException : entité inconnue »

Problème :

Vous avez rencontré l'erreur « org.hibernate.MappingException : Entité inconnue » en essayant d'intégrer Hibernate 5.0 à MySQL. Cette erreur se produit avec les versions Hibernate 5.0.0 et 5.0.1 mais pas avec Hibernate 4.3.9.

Cause :

Le problème survient en raison d'un changement dans le La manière dont SessionFactory est créée avec Hibernate 5. L'utilisation de la méthode Configuration().buildSessionFactory(sr) comme dans les versions antérieures d'Hibernate ne fonctionne plus, car elle supprime les informations de mappage.

Solution :

Pour résoudre cette erreur, il existe deux approches :

1. Configuration simplifiée :

Pour les fichiers de configuration standard comme hibernate.cfg.xml et hibernate.properties, vous pouvez créer SessionFactory sans utiliser ServiceRegistry :

<code class="java">SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();</code>

2. Utilisation de StandardServiceRegistryBuilder pour charger les propriétés :

Si vous avez des propriétés dans des fichiers autres que hibernate.properties, vous pouvez utiliser StandardServiceRegistryBuilder pour les charger :

Chargement des propriétés en tant que ressource :

<code class="java">ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties("hibernate-h2.properties").build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);</code>

Chargement des propriétés à partir d'un chemin de système de fichiers :

<code class="java">File propertiesPath = new File("some_path");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties(propertiesPath).build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);</code>

Remarques supplémentaires :

  • Le tutoriel Hibernate 5 contient une approche incorrecte pour créer SessionFactory. Il montre la méthode new Configuration().configure().buildSessionFactory(new StandardServiceRegistryBuilder().build()), qui ne configure pas correctement Hibernate.
  • Ce problème affecte les versions Hibernate 5.0.0 et 5.0.1. . Pour Hibernate 5.1 et versions ultérieures, la méthode de configuration d'origine Configuration().buildSessionFactory(sr) fonctionne comme prévu.

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!

Déclaration:
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