Question

Je dois tester certaines choses sur un projet qui a été développé par d'autres, mais qui est nouveau pour moi. Ils utilisent Hibernate comme une implémentation JPA.

J'ai une machine virtuelle dans laquelle tout est configuré, mais lorsque je veux démarrer un Testclient (petits programmes de console, pas de test d'Unittesting). J'ai toujours la même erreur.

Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:698)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
    ...    
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:409)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:119)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2006)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1289)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:691)
    ... 7 more

La structure du projet ressemble à ceci. Etrangement, j'avais déjà ce truc en marche (avant mes vacances d'été.

|-- bin
|-- lib
|-- rsc
|   |-- META-INF
|   |   `-- persistence.xml
|-- src
|   |-- org 
|   |    | ... all sourcecode below 
`-- target

J'ai essayé de circonscrire le problème, c'est pourquoi j'ai supprimé le dossier entier META-INF. Toujours la même erreur. Ce n'était pas ce à quoi je m'attendais et m'a amené à croire que persistence.xml ne se trouve pas du tout. Je ne sais pas pourquoi ils ont mis META-INF dans le dossier rsc (comme je l’ai dit, ce n’est pas mon projet), mais lorsque je le mets dans le dossier racine ou dans le dossier src, l’erreur persiste.

Comment puis-je m'assurer que le fichier persistence.xml a été trouvé? Existe-t-il une documentation où META-INF devrait être placé? (Et pourquoi ce message d'erreur est-il si trompeur?)

Était-ce utile?

La solution

Cela dépend de votre processus de construction à l’endroit où les fichiers / jar compilés aboutiront au démarrage de votre application de test. Je suis sûr que vous ne commencerez pas par src-folder. Vous obtiendrez un dossier de construction ou de test à partir duquel exécuter votre application. Ensuite, la structure du dossier devrait ressembler à ceci:

|- build
   |- classes
      |- org (packages)
         |- ...
      |- META-INF
         |- persistence.xml
         |- ... (other config files)

Vous pouvez également consulter cette lien .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top