Не указан поставщик сохраняемости для EntityManager - PullRequest
138 голосов
/ 21 июля 2009

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

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

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

2009-07-21 09:22:41,018 [main] ERROR - No Persistence provider for EntityManager named agisdb
javax.persistence.PersistenceException: No Persistence provider for EntityManager named agisdb
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:89)
    at 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>

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

Ответы [ 25 ]

1 голос
/ 27 мая 2014

Я просто скопировал META-INF в src и работал!

1 голос
/ 29 июня 2013

Вам нужны следующие файлы jar в пути к классам:

  1. antlr-2.7.6.jar
  2. Викисклад коллекция-3.1.jar
  3. dom4j-1.6.1.jar
  4. hibernate-commons-annotations-4.0.1.Final.jar
  5. hibernate-core-4.0.1.Final.jar
  6. hibernate-entitymanager.jar
  7. hibernate-jpa-2.0-api-1.0.0.Final.jar
  8. javassist-3.9.0.jar
  9. jboss-logging-3.1.1.GA.jar
  10. jta-1.1.jar
  11. slf4j-api-1.5.8.jar
  12. ххх-driver.jar-JDBC
0 голосов
/ 26 сентября 2018

Проверьте имя постоянного модуля

<persistence-unit name="com.myapp.model.jpa"
    transaction-type="RESOURCE_LOCAL">    
public static final String PERSISTENCE_UNIT_NAME = "com.myapp.model.jpa";
Persistence.createEntityManagerFactory(**PERSISTENCE_UNIT_NAME**);
0 голосов
/ 04 июля 2018

Моя проблема была решена путем добавления информации в файл persistence.xml, например. <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> и затем убедитесь, что у вас есть библиотека в classpath, например в Maven добавить зависимость вроде

<dependency>
  <groupId>org.eclipse.persistence</groupId>
  <artifactId>eclipselink</artifactId>
  <version>2.5.0</version>
</dependency>
0 голосов
/ 02 октября 2014

Если в Persistence.createEntityManagerFactory("JPAService") есть разные имена в разных классах, вы получите ошибку. Путем рефакторинга можно получить разные имена , что было в моем случае. В одном классе автоматически сгенерированный Persistence.createEntityManagerFactory("JPAService") в private void initComponents(), класс ContactsTable отличается от Persistence.createEntityManagerFactory("JPAServiceExtended") в классе DBManager.

...