0

J'utilise Hibernate 5.0.7 et j'ai un problème avec la configuration des annotations.Hibernate 5.0.7 Configuration: entité non chargée

Ceci est mon fichier hibernate.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
<session-factory> 

    <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> 
    <property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=mydb</property> 
    <property name="hibernate.connection.username">sa</property> 
    <property name="hibernate.connection.password">sa</property> 

    <property name="hibernate.current_session_context_class">thread</property> 
    <property name="hibernate.show_sql">true</property> 

    <mapping class="com.domain.Person"/> 

</session-factory> 

je configure l'usine de la session de cette façon:

Configuration configuration = new Configuration(); 
    configuration.configure("hibernate.cfg.xml"); 

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

    SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry); 

    return sessionFactory; 

Lorsque je tente d'exécuter une requête sur la personne la classe I a obtenu une liste vide. J'ai découvert que la personne de classe n'est pas chargé correctement dans l'usine de session (sessionFactory.getAllClassMetadata() retourne la liste vide) et la seule façon de le faire est d'ajouter manuellement la classe:

configuration.addAnnotatedClass(Person.class); 

Comment puis-je résoudre?

Répondre

2

Votre configuration de fabrique de session est incorrect for Hibernate 5. Lorsque vous faites configuration.buildSessionFactory(serviceRegistry), Configuration perdu toutes les informations sur la cartographie qui obtient par appel configuration.configure("hibernate.cfg.xml").

Si vous utilisez Hibernate 5, vous pouvez créer une usine de la session de cette façon

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); 

Vous n'avez pas besoin de passer hibernate.cfg.xml à la méthode configure() à cause de ce nom est utilisé par défaut, configure("hibernate.cfg.xml") est le même que configure().

+0

Parfait !! Résolu! Je vous remercie! – xc93hil

+0

@ cb2783 De rien. Marquez ma réponse comme acceptée, s'il vous plaît. –