Мне нужно проверить некоторые вещи в проекте, который был разработан другими, но он для меня новенький. Они используют Hibernate в качестве реализации JPA.Как я могу проверить, поддерживается ли persistence.xml или нет?
У меня есть виртуальная машина, в которой все настроено, но когда я хочу запустить любой Testclient (небольшие консольные программы, Unittesting). Я всегда получаю ту же ошибку.
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
Структура проекта выглядит следующим образом. Как ни странно, я уже была эта вещь работает (перед моим summerholdays.
|-- bin
|-- lib
|-- rsc
| |-- META-INF
| | `-- persistence.xml
|-- src
| |-- org
| | | ... all sourcecode below
`-- target
Я пытался сузить проблему, поэтому я удалил всю папку META-INF. Все та же ошибка. Это было не то, что я ожидал, и заставил меня поверить, что persistence.xml вообще не найден. Я не знаю, почему они помещают META-INF в папку rsc (как я уже упоминал, это не мой проект), но когда я помещаю его в корневую папку или в папке src ошибка остается.
Как я могу убедиться, что persistence.xml был найден? Есть ли какая-либо документация, в которой должен быть размещен META-INF. (И почему это ошибочное сообщение так вводит в заблуждение?)
Большое спасибо, у меня была цель муравья для этого в моих других проектах, поэтому я уже не знал, что persistence.xml должен быть в определенном месте. (И я все еще ссорился с ошибкой.) – sebastiangeiger