Вопрос-ответ

No Persistence provider for EntityManager named

Нет поставщика сохраняемости для именованного EntityManager

У меня есть мой persistence.xml с таким же именем, использующий TopLink в META-INF каталоге. Затем у меня есть мой код, вызывающий его с помощью:

EntityManagerFactory emfdb = Persistence.createEntityManagerFactory("agisdb");

Тем не менее, я получил следующее сообщение об ошибке:

2009-07-21 09:22:41,018 [основная] ОШИБКА - Нет поставщика сохраняемости для EntityManager с именем agisdb 
javax.persistence.Исключение PersistenceException: нет поставщика сохраняемости для EntityManager с именем agisdb
в javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:89)
в javax.persistence.Persistence.createEntityManagerFactory(Persistence.java: 60)

Вот persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="agisdb">
<class>com.agis.livedb.domain.AddressEntity</class>
<class>com.agis.livedb.domain.TrafficCameraEntity</class>
<class>com.agis.livedb.domain.TrafficPhotoEntity</class>
<class>com.agis.livedb.domain.TrafficReportEntity</class>
<properties>
<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/agisdb"/>
<property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="toplink.jdbc.user" value="root"/>
<property name="toplink.jdbc.password" value="password"/>
</properties>
</persistence-unit>
</persistence>

Это должно было быть в пути к классу. Тем не менее, я получил приведенную выше ошибку.

Переведено автоматически
Ответ 1

Поместите "hibernate-entitymanager.jar" в путь к классу приложения.
Для более новых версий вам следует использовать "hibernate-core.jar" вместо устаревшего hibernate-entitymanager

Если вы работаете через какую-либо IDE, например, Eclipse: Project Properties -> Java Build Path -> Libraries.

В противном случае поместите это в /lib вашего приложения.

Ответ 2

После <persistence-unit name="agisdb"> определите имя поставщика сохраняемости:

<provider>org.hibernate.ejb.HibernatePersistence</provider>
Ответ 3

Убедитесь, что persistence.xml файл находится в каталоге: <webroot>/WEB-INF/classes/META-INF

Ответ 4

Столкнулся с той же проблемой и довольно долго не мог найти решение. В моем случае это помогло заменить

<provider>org.hibernate.ejb.HibernatePersistence</provider>

с

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

Взял решение из здесь

java jpa