IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Problème pour initialiser Hibernate Annotations


Sujet :

Hibernate Java

  1. #1
    Membre expérimenté

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 690
    Points : 1 478
    Points
    1 478
    Par défaut Problème pour initialiser Hibernate Annotations
    Bonjour,
    Je m'essaye avec Hibernate Annotations et j'ai un problème que je n'arrives pas à résoudre ...
    J'ai dans mon répértoire src un package avec deux entités annotées. J'ai crée, dans le même dossier src le fichier hibernate.cfg.xml suivant :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
        <hibernate-configuration>
        	<session-factory>
    	    	<!-- Database connection settings -->
    	        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
    	        <property name="connection.url">jdbc:hsqldb:hsql://localhost</property>
    	        <property name="connection.username">sa</property>
    	        <property name="connection.password"></property>
     
    	        <!-- JDBC connection pool (use the built-in) -->
    	        <property name="connection.pool_size">1</property>
     
    	        <!-- SQL dialect -->
    	        <property name="dialect">org.hibernate.dialect.HSQLDialect</property>
     
    	        <!-- Enable Hibernate's automatic session context management -->
    	        <property name="current_session_context_class">thread</property>
     
    	        <!-- Disable the second-level cache  -->
    	        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
     
    	        <!-- Echo all executed SQL to stdout -->
    	        <property name="show_sql">true</property>
     
    	        <!-- Drop and re-create the database schema on startup -->
    	        <property name="hbm2ddl.auto">create</property>
     
        		<mapping package="entities"/>
        		<mapping class="entities.Personne" />
        		<mapping class="entities.Passeport" />
        	</session-factory>
        </hibernate-configuration>

    Finalement, j'ai fait un petit util qui me donne une SessionFactory, je ne doutes pas de cette classe car je l'ai eu du site de Hibernate.

    Lorsque j'essaye d'exploiter tout ça (enregistrer quelque chose en base de données) j'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Exception in thread "main" java.lang.ExceptionInInitializerError
    	at util.HibernateUtil.<clinit>(HibernateUtil.java:17)
    	at metier.PersonneManager.storeAndLoadPersonne(PersonneManager.java:17)
    	at metier.PersonneManager.main(PersonneManager.java:12)
    Caused by: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
    	at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:57)
    	at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39)
    	at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:426)
    	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:128)
    	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
    	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
    	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
    	at util.HibernateUtil.<clinit>(HibernateUtil.java:14)
    	... 2 more
    Le dialect est bien initialisé dans le fichier de config et j'ai mis dans le classPath le driver de mon sgbd (hsqldb). Quelqu'un pourrait il me sortir de ce pétrin

  2. #2
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,
    essaies comme ça
    <property name="hibernate.dialect">

  3. #3
    Membre expérimenté

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 690
    Points : 1 478
    Points
    1 478
    Par défaut
    Ça ne fonctionne pas.
    En fait, on dirait que ma classe utilitaire ne trouves pas le fichier hibernate.cfg.xml. Même en enlevant complétement le fichier j'ai les mêmes messages d'erreur... Mon fichier de configuration est dans le répertoire src, au même niveau que mes packages.
    Je joins ma classe utilitaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    import org.hibernate.*;
    import org.hibernate.cfg.*;
     
     
    public class HibernateUtil {
     
    private static final SessionFactory sessionFactory;
     
        static {
            try {
     
                sessionFactory = new AnnotationConfiguration().buildSessionFactory();
            } catch (Throwable ex) {
                // Log exception!
                throw new ExceptionInInitializerError(ex);
            }
        }
     
        public static Session getSession()
                throws HibernateException {
            return sessionFactory.openSession();
        }
    }

  4. #4
    Membre expérimenté

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 690
    Points : 1 478
    Points
    1 478
    Par défaut
    Le problème s'éclaircit mais ne se résoud pas encore
    La documentation de Hibernate Annotation donnait une mauvaise manière d'initialiser l'environnement. Il faut utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
    Maintenant j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error on line 34 of document  : The markup in the document following the root element must be well-formed. Nested exception: The markup in the document following the root element must be well-formed
    Et quand je parcours mon fichier xml de config, je vois que les lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <mapping package="entities"/>
        		<mapping class="entities.Personne" />
        		<mapping class="entities.Passeport" />
    semblent comporter des erreurs ...

    Citation Envoyé par ygrim Voir le message
    Ça ne fonctionne pas.
    En fait, on dirait que ma classe utilitaire ne trouves pas le fichier hibernate.cfg.xml. Même en enlevant complétement le fichier j'ai les mêmes messages d'erreur... Mon fichier de configuration est dans le répertoire src, au même niveau que mes packages.
    Je joins ma classe utilitaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    import org.hibernate.*;
    import org.hibernate.cfg.*;
     
     
    public class HibernateUtil {
     
    private static final SessionFactory sessionFactory;
     
        static {
            try {
     
                sessionFactory = new AnnotationConfiguration().buildSessionFactory();
            } catch (Throwable ex) {
                // Log exception!
                throw new ExceptionInInitializerError(ex);
            }
        }
     
        public static Session getSession()
                throws HibernateException {
            return sessionFactory.openSession();
        }
    }

  5. #5
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Re,

    Je suppose que qd tu parles de fichier de config tu parles de hibernate.cfg.xml
    tu devrais avoir
    <mapping resource="xxx.hbm.xml" />
    Et ds ton fichier de mapping xxx.hbm.xml
    <hibernate-mapping package="Nom_du_Package">
    <class name="Nom_de_la_classe" table="Nom_de_la_table">

  6. #6
    Membre expérimenté

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 690
    Points : 1 478
    Points
    1 478
    Par défaut
    C'est réglé !!!!!
    Pour les fichiers xxx.hbm.xml, je ne les utilises pas vu que j'utilise les annotations...

    Alors le problème était simplement dans l'entête du fichier xml : j'utilisais la dtd de hibernate-2 alors qu'il fallait utiliser la dtd de hibernate-3. Fallait la trouver celle là !

    Merci pour ton aide !

  7. #7
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Pour les fichiers xxx.hbm.xml, je ne les utilises pas vu que j'utilise les annotations...
    Dsl, c'est ce que je disais ds le début de la réponse que je voulais faire. Je n'utilise pas les annotations. Mais j'ai édité un peu violement le msg et le bout a été supprimé avec

  8. #8
    Membre expérimenté

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 690
    Points : 1 478
    Points
    1 478
    Par défaut
    y'a pas de soucis !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour initialiser un Array
    Par domxaline dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 14/04/2012, 22h29
  2. Problème pour initialiser ma combo
    Par zatari dans le forum JSF
    Réponses: 2
    Dernier message: 16/09/2011, 17h34
  3. Problème pour installer Hibernate Synchronizer 3
    Par chady dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 09/06/2010, 20h51
  4. Réponses: 1
    Dernier message: 27/11/2009, 15h32
  5. Problème d'initialisation hibernate
    Par Sebastien0104 dans le forum JOnAS
    Réponses: 1
    Dernier message: 21/05/2008, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo