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 :

Hibernate Dialect must be explicitly set


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 20
    Points : 16
    Points
    16
    Par défaut Hibernate Dialect must be explicitly set
    Bonjour à tous,

    J'ai suivis le cours de JM doudoux pour hibernate.
    J'ai une appli qui parse un fichier Excel avec Apache POI, puis je persiste les données en base MySQL.
    J'ai crée la base 'glnbu' avec une table 'ibnf' et dedans les champs que je souhaite remplir en parsant le fichier Excel.
    Sous Netbeans avec hibernate reverse engineering wizzard, j'ai mappé automatiquement la base afin d'obtenir le fichier hibernate.reveng.xml et ma classe Ibnf.java avec les attributs correspondant aux champs de ma base (new Hibernate mapping files and POJO'S from database).

    Ensuite, j'ai essayé les deux configuration proposé dans le cours de JM doudoux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Configuration config = new Configuration();
    config.addClass(Ibnf.class);
    SessionFactory sessionFactory = config.buildSessionFactory();
    Session session = sessionFactory.openSession();
    Transaction tx = null;
    cela me donne l'erreure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Exception in thread "main" 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 com.atosorigin.excel.imports.ExcelReader.persitExcelDataFrom(ExcelReader.java:70)
            at com.atosorigin.excel.imports.ExcelReader.main(ExcelReader.java:138)
    Java Result: 1
    j'ai aussi essayé de l'autre manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
    sessionFactory.openSession();
    Qui me renvoi une autre erreure :
    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
     
    Exception in thread "main" org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/atosorigin/persistence/Ibnf.hbm.xml
            at org.hibernate.cfg.Configuration.addResource(Configuration.java:569)
            at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1587)
            at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555)
            at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534)
            at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508)
            at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
            at org.hibernate.cfg.Configuration.configure(Configuration.java:1414)
            at com.atosorigin.excel.imports.ExcelReader.persitExcelDataFrom(ExcelReader.java:68)
            at com.atosorigin.excel.imports.ExcelReader.main(ExcelReader.java:136)
    Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping com.atosorigin.persistence.Ibnf
            at org.hibernate.cfg.Mappings.addClass(Mappings.java:118)
            at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:145)
            at org.hibernate.cfg.Configuration.add(Configuration.java:669)
            at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:504)
            at org.hibernate.cfg.Configuration.addResource(Configuration.java:566)
            ... 8 more
    Java Result: 1
    Merci de m'aider s'il vous plait car en suivant l'exemple donné dans le cours, j'ai essayé et pas de problème. Seulement avec mon appli...

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
    Vous devez précisez le dialecte à utiliser, la base de donnée, la string jdbc, le mot de passe etc. Comme vous ne passez pas par un fichier de config (absence de configure()) vous devez préciser tout ça a la main dans le code
    Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping com.atosorigin.persistence.Ibnf
    Vous demandez deux fois à hibernate de configurer la même classe. En général ça se produit dans, dans le fichier de configuration, on fait à la fois l'import du fichier mappant la classe (com/atosorigin/persistence/Ibnf.hbm.xml) et l'import de la classe par annotation.

    vous devez choisir un des deux, pas les deux

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Merci !
    L'erreur était dans l'hibernate.cfg.xml où il y avait plusieurs lignes <mapping> (pourtant j'ai utilisé l'outil de mapping automatique, c'est pour ça que je ne pensais pas que ça venait de là) et aussi dans mon fichier ibnf.hbm.xml où il y avait une balise <property> qui avait pris le nom d'une colonne ! (portant aussi générée automatiquement avec les outils hibernate).
    Du coup c'est pour ça que j'avais mal configuré (que j'avais aussi fait la conf dans le code et par fichier) car je pensais que c'était moi qui avait mal fait.
    Mais NAN, c'est l'outil de génération de code qui a merdé (un peu)

    Comme quoi, il ne faut pas faire une confiance aveugle aux outils de génération de code !! ...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/06/2014, 13h00
  2. Réponses: 2
    Dernier message: 22/09/2009, 16h27
  3. Hibernate Dialect must be explicitly set
    Par coold dans le forum JPA
    Réponses: 1
    Dernier message: 14/06/2009, 10h18
  4. Hibernate Dialect must be explicitly set
    Par cotede2 dans le forum Hibernate
    Réponses: 5
    Dernier message: 08/10/2008, 16h11
  5. Hibernate: many-to-many, collections SET vides
    Par tzikin dans le forum Hibernate
    Réponses: 1
    Dernier message: 20/02/2007, 12h24

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