Pregunta

Tengo que probar algunas cosas en un proyecto que ha sido desarrollado por otros, pero es nuevo para mí. Están utilizando Hibernate como una implementación JPA.

Tengo una máquina virtual en la que todo está configurado, pero cuando quiero iniciar cualquier Testclient (programas de consola pequeña, sin Apagar). Siempre me sale el mismo error.

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 estructura del proyecto se ve así. Por extraño que parezca, ya tenía esta cosa en funcionamiento (antes de mis vacaciones de verano.

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

Intenté reducir el problema, por lo tanto, eliminé toda la carpeta META-INF. Sigue siendo el mismo error. Eso no fue lo que esperaba y me hizo creer que persistence.xml no se encuentra en absoluto. No sé por qué ponen META-INF en la carpeta rsc (como mencioné, no es mi proyecto), pero cuando lo puse en la carpeta raíz o en la carpeta src, el error permanece.

¿Cómo puedo asegurarme de que se haya encontrado persistence.xml? ¿Hay alguna documentación donde colocar META-INF? (¿Y por qué este mensaje de error es tan engañoso?)

¿Fue útil?

Solución

Depende del proceso de compilación donde terminarán los archivos / archivos compilados al iniciar la aplicación de prueba. Estoy bastante seguro de que no empezarás desde la carpeta src. Obtendrás algo de compilación o carpeta de prueba para ejecutar tu aplicación desde. Entonces, la estructura de la carpeta debería ser así:

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

También puede consultar este enlace .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top