Как я могу проверить, был ли найден файл persistence.xml или нет?

StackOverflow https://stackoverflow.com/questions/1400103

  •  05-07-2019
  •  | 
  •  

Вопрос

Я должен протестировать некоторые вещи в проекте, который был разработан другими, но для меня это новость. Они используют Hibernate в качестве реализации JPA.

У меня есть виртуальная машина, в которой все настроено, но когда я хочу запустить любой 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

Структура проекта выглядит следующим образом. Как ни странно, у меня уже была эта штука (до моих летних выходных.

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

Это было полезно?

Решение

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

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

Вы также можете проверить это ссылка .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top