2009-09-09 4 views
1

Мне нужно проверить некоторые вещи в проекте, который был разработан другими, но он для меня новенький. Они используют 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. (И почему это ошибочное сообщение так вводит в заблуждение?)

ответ

1

Это зависит от вашего процесса сборки, в котором скомпилированные файлы/jar закончится при запуске тестового приложения. Я уверен, вы не начнете с src-папки. Для запуска приложения вы получите сборку или тестовую папку. Тогда структура папок обычно должна быть примерно такой:

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

Вы также могли бы проверить link.

+0

Большое спасибо, у меня была цель муравья для этого в моих других проектах, поэтому я уже не знал, что persistence.xml должен быть в определенном месте. (И я все еще ссорился с ошибкой.) – sebastiangeiger