Hibernate 5 : MappingException : entité inconnue
Dans Hibernate 5, l'erreur org.hibernate.MappingException : entité inconnue peut se produire lors de la tentative de intégrer avec MySQL. Ce problème est spécifique aux versions 5.0.0 et 5.0.1 d'Hibernate et est résolu dans les versions suivantes.
原因
L'erreur provient d'un changement dans Hibernate 5 comportement. Dans les versions antérieures, les informations de configuration étaient conservées dans Configuration même après la création de ServiceRegistry. Cependant, dans Hibernate 5, la configuration perd ces informations lorsque configuration.buildSessionFactory(sr) est appelée.
修复
1. Fichiers de configuration standard :
Si vous utilisez les fichiers standard hibernate.cfg.xml et hibernate.properties, créez directement la fabrique de sessions :
<code class="java">SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();</code>
2. Chargement des propriétés :
Si les propriétés sont stockées dans un fichier différent, utilisez StandardServiceRegistryBuilder :
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 fichier :
<code class="java">File propertiesPath = new File("some_path"); ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .configure() .loadProperties(propertiesPath) .build(); SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);</code>
3. Utilisation de l'utilitaire Fluent Hibernate :
Pour un exemple complet utilisant cette approche, reportez-vous au projet fluent-hibernate-mysql sur GitHub.
4. Éviter les recommandations incorrectes du didacticiel Hibernate 5 :
L'extrait de code erroné fourni dans le didacticiel Hibernate 5 :
<code class="java">return new Configuration().configure().buildSessionFactory( new StandardServiceRegistryBuilder().build() );</code>
n'effectue pas une configuration appropriée et doit être évité.
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!