¿Cómo puedo probar si persistence.xml ha sido encontrado o no?
-
05-07-2019 - |
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?)
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 .