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

148

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

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

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

2009-07-21 09: 22: 41,018 [main] ОШИБКА - Отсутствует поставщик сохраняемости для 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>

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

Роберт А Хенру
источник

Ответы:

85

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

<provider>org.hibernate.ejb.HibernatePersistence</provider>
Дейв Джарвис
источник
5
Я использую Derby, и это не нужно было указывать (я сделал, но затем удалил его, как только решил проблему, просто чтобы убедиться). Наконец-то я получил сообщение об ошибке, поскольку файл persistence.xml отсутствовал в папке src / META-INF, даже если он находился в папке в исходном пути Eclipse для проекта. Я думаю, что где-то на src / *
жестко запрограммировано
6
в моем случае в этом не было необходимости, но на пути к классам hibernate-entitymanager * .jar, как указано в ответе Уальтера-младшего ниже. Я использую автономное приложение GWT с hibernate-core-4.3.7.jar , hibernate-entitymanager-4.3.7.Final.jar и hibernate-jpa-2.1-api-1.0.0.jar .
Андреас Дитрих
3
То же самое с @AndreasDietrich, после замены артефакта «hibernate-core-4.3.10» на «hibernate-entitymanager-4.3.10» в pom.xml (я использую maven) эта ошибка исчезла. На самом деле, hibernate.org/orm/downloads говорит, что вы должны использовать «hibernate-entitymanager-4.3.10» для JPA.
Гонконг
1
Кроме того, мне также пришлось перейти от hibernate-entitymanager-3.4.0.GA к 3.6.10.Final . На тот случай, если у вас все еще есть устаревшая кодовая база, использующая Hibernate 3.
Хави Васкес
5
Я немного удивлен, что у вас нет проблем с вашим устройством <provider/>, а при использовании hibernate-4 вам следует сменить поставщика <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>, см. Stackoverflow.com/questions/23041964/… .
Роб
86

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

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

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

Уалтер младший
источник
3
Мне понадобилось несколько часов, чтобы понять, в чем причина. Для других людей, ищущих эту кровавую банку, в случае Hibernate 4.1.3 она находится в hibernate-release-4.1.3.Final \ lib \ jpa \ hibernate-entitymanager-4.1.3.Final.jar
Vedran
7
И для тех из нас, кто использует Maven, это будет org.hibernateартефактом groupidhibernate-entitymanager
Саймон Форсберг,
2
Это был eclipselink.jar для меня, которого не хватало на пути. Никакой гибернации * что-то. Путь в пути вообще.
пользователь неизвестен
3
Просто потратил несколько часов, чтобы убедиться, что файл persistence.xml находится на пути к классам, и сравнил каждый аспект проекта, для которого он работал, и проекта, для которого он не работал. Очень вводящее в заблуждение сообщение об ошибке, так как это может произойти, если файл persistence.xml отсутствует, если отсутствует PU с таким именем, или, очевидно, если отсутствует баночка спящего режима!
Дэвид Манн
Для меня это было org.eclipse.persistence.jpaс объемным тестом.
Марек
67

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

user225932
источник
8
это не сработало для меня, принёс единицу постоянства не найдено: ошибка 'null'. Перемещение обратно в /src/main/resources/META-INF/persistence.xml
tomasb
1
Я думаю, что это относится к тем, кто использует toplink (или другой материал, связанный с Интернетом), для всех остальных здесь могут быть более подходящими ответы.
Саймон Форсберг
2
Спасибо, путь для меня - цель / классы / META-INF
Frizz1977
То же самое, по какой-то странной причине, он должен быть в каталоге META-INF, иначе не будет работать ...
Томас
17

Мне нужно это в моем файле pom.xml:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.2.6.Final</version>
</dependency>
технократ
источник
Работает на версии 4.3.11.
petertc
Это устарело, см. Выше. Вместо этого используйте hibernate-core.
Фу
16

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

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

с участием

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

Взял решение отсюда

Sneg
источник
2
Обновлялся с Hibernate 4.3.5 до 5.2.12, и это изменение имени провайдера устранило проблему для меня. Этот параметр позволяет JPA использовать основной файл .jar вместо entity-manger .jar, который отображается как устаревший в центральном репозитории Maven. Большое спасибо за то, что поделились.
Джошпт
10

Есть еще один момент: если вы столкнулись с этой проблемой в среде Eclipse RCP, вам, возможно, придется изменить поколение Factory с Persistence.createEntityManagerFactoryнаnew PersistenceProvider().createEntityManagerFactory

см. ECF для подробного обсуждения этого.

col.panic
источник
Это была именно та проблема, с которой я столкнулся с org.eclipse.persistence.jpa 2.4.0. Я буквально потратил 2 часа, вырывая свои волосы, удивляясь, почему они не могут найти мой persisence.xml. Все примеры, кажется, не включают это. да ладно ... большое спасибо!
Марк Миллер
9

Возможно, вы определили одного провайдера как, <provider>org.hibernate.ejb.HibernatePersistence</provider>но ссылаетесь на другого в jar. Это случилось со мной: мой поставщик persistence.xml был openjpa, но я использовал eclipselink в моем classpath. Надеюсь, это поможет!

Gilberto
источник
7

Быстрый совет:

  • проверьте, находится ли файл persistence.xml в вашем пути к классам
  • проверьте, есть ли провайдер hibernate в вашем classpath

При использовании JPA в автономном приложении (за пределами JavaEE) где-то должен быть указан поставщик постоянства. Это можно сделать двумя способами, которые я знаю:

  • либо добавьте элемент провайдера в единицу сохраняемости: <provider>org.hibernate.ejb.HibernatePersistence</provider>(как описано в правильном ответе Криса: https://stackoverflow.com/a/1285436/784594 )
  • или провайдер для интерфейса javax.persistence.spi.PersistenceProvider должен быть указан как сервис, см. здесь: http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html (обычно это включается, когда вы включаете hibernate или другую реализацию JPA в ваш путь к классам

В моем случае я обнаружил, что из-за неправильной конфигурации maven jar hibernate-entitymanager не был включен в качестве зависимости, даже если это была временная зависимость другого модуля.

OndroMih
источник
/ facepalm - я забыл добавить зависимость maven для провайдера спящего режима. Спасибо!
jgitter
5

Если вы используете Eclipse, убедитесь, что шаблон исключения не удаляет ваши persistence.xmlиз исходных папок на пути сборки.

  1. Перейдите в Свойства -> Путь сборки Java -> вкладка Источник
  2. Проверьте ваш шаблон исключения, который расположен в
    MyProject/src/main/java -> Excluded: <your_pattern>
    узле дерева
  3. При желании установите его Excluded: (None), выбрав узел и нажав кнопку « Изменить ...» слева.
wypieprz
источник
Решил мою проблему. Исключенный шаблон был установлен в «**» после извлечения / извлечения. Я не знаю почему ...
Джоселин
5

Я несколько лет опаздываю на вечеринку, но я столкнулся с тем же исключением, пытаясь заставить Hibernate 3.5.1 работать с HSQLDB и настольной JavaFX-программой. Я получил его на работу с помощью этой темы и много проб и ошибок. Кажется, вы получаете эту ошибку для целого ряда проблем:

No Persistence provider for EntityManager named mick

Я попытался создать примеры учебников по гибернации, но поскольку я использовал Java 10, я не смог заставить их легко создавать и запускать. Я отказался от этого, не очень желая тратить время на решение своих проблем. Настройка файла module-info.java (Jigsaw) - это еще одна новинка, которую многие люди еще не обнаружили.

Несколько сбивает с толку то, что эти (ниже) были единственными двумя файлами, которые мне были нужны в моем файле build.gradle. В документации Hibernate не совсем ясно, какие именно Jar-файлы вам нужно включить. Entity-manager вызывал путаницу и больше не требуется в последней версии Hibernate, как и javax.persistence-api. Обратите внимание, я использую здесь Java 10, поэтому мне пришлось включить jaxb-api, чтобы обойти некоторые ошибки xml-bind, а также добавить запись для модуля постоянства java в мой файл module-info.java.

build.gradle

// https://mvnrepository.com/artifact/org.hibernate/hibernate-core
compile('org.hibernate:hibernate-core:5.3.1.Final')

// https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api
compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'

Module-info.java

// Used for HsqlDB - add the hibernate-core jar to build.gradle too
requires java.persistence;

В hibernate 5.3.1 вам не нужно указывать провайдера ниже в вашем файле persistence.xml. Если он не указан, по умолчанию выбирается поставщик Hibernate.

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

Файл persistence.xml должен находиться в правильном каталоге, поэтому:

src/main/resources/META-INF/persistence.xml

Проход по исходному коду гибернации в отладчике Intellij, где он проверяет диалект, также вызывал точно такое же исключение из-за отсутствия свойства диалекта в файле persistence.xml. Я добавил это (добавьте правильный для вашего типа БД):

<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>

После этого я по-прежнему получал то же исключение, поэтому при повторном обходе отладчика в Intellij у тестовой сущности, которую я пытался сохранить (простой пример родитель-потомок), отсутствовали аннотации для отношений OneToMany, ManyToOne. Я исправил это, и исключение ушло, и мои сущности сохранились в порядке.

Вот мой полный окончательный файл persistence.xml:

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
            http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
         version="2.1">

<persistence-unit name="mick" transaction-type="RESOURCE_LOCAL">
    <description>
        Persistence unit for the JPA tutorial of the Hibernate Getting Started Guide
    </description>

    <!-- Provided in latest release of hibernate
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    -->

    <class>com.micks.scenebuilderdemo.database.Parent</class>
    <class>com.micks.scenebuilderdemo.database.Child</class>

    <properties>
        <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbc.JDBCDriver"/>

        <property name="javax.persistence.jdbc.url"
                  value="jdbc:hsqldb:file:./database/database;DB_CLOSE_DELAY=-1;MVCC=TRUE"/>

        <property name="javax.persistence.jdbc.user" value="sa"/>
        <property name="javax.persistence.jdbc.password" value=""/>

        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.hbm2ddl.auto" value="create"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
    </properties>

</persistence-unit>

</persistence>

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

MickG
источник
Огромное спасибо за детали конфигурации Действительно помогли решить это.
Doogle
4

Угловой случай: если вы используете m2Eclipse, он автоматически вставляет исключения в ваши папки ресурсов. Затем, когда вы попытаетесь запустить тесты в eclipse, последующее отсутствие файла persistence.xml приведет к этой ошибке.

обкрадывать
источник
3

Убедитесь, что вы создали файл persistence.xml в папке 'src'. Я создал в папке проекта, и это была моя проблема.

harcharan
источник
Eclipse 4.4.0 не хочет вкладывать папки SRC, поэтому я поместил META-INF на верхний уровень, полагая, что постоянство наличия.xml в пути к классам будет адекватным. НЕ! Мне пришлось вручную создать src / META-INF (в операционной системе) и вручную переместить файл persistence.xml. Возможно, это возможно сделать в Eclipse, но я не мог этого понять.
Фурманатор
3

Если вы используете Maven, возможно, он не ищет нужное место для папки META-INF. Другие упоминали о копировании папки, но другой способ, который мне помог, состоял в том, чтобы сообщить Maven, где его искать, используя <resources>тег. Смотрите: http://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html.

Эсфандии
источник
2

Это происходит, когда менеджер сущностей пытается указать много постоянных единиц. Сделайте следующие шаги:

  1. откройте соответствующий файл в вашем редакторе (если ваш проект был закрыт в вашей IDE)
  2. удалить весь код персистентности и менеджера сущностей
  3. сохранить файл
  4. откройте проект в вашей IDE
  5. Теперь свяжите БД или таблицу по вашему выбору
Махеш
источник
2

Я столкнулся с той же проблемой, но на EclipseLink версии 2.5.0 .

Я решил свою проблему, добавив еще один файл JAR, который был обязательно ( javax.persistence_2.1.0.v201304241213.jar.jar );

Необходимые
фляги : - javax.persistence_2.1.0.v201304241213.jar
- eclipselink.jar
- jdbc.jar (в зависимости от используемой базы данных).

Надеюсь, это поможет.

E_X
источник
2

У меня также была эта ошибка, но проблема заключалась в URI пространства имен в persistence.xml.

Я заменил http://xmlns.jcp.org/xml/ns/persistenceна http://java.sun.com/xml/ns/persistenceи версию 2.1 на 2.0.

Это сейчас работает.

Людовик Гийом
источник
Это именно то, что случилось со мной при использовании Tomcat. Я просто добавил полный заголовок, чтобы уточнить для новых пользователей
childno͡.de
2

Вам нужно добавить hibernate-entitymanager-x.jar в путь к классам.

В Hibernate 4.x, если jar присутствует, нет необходимости добавлять org.hibernate.ejb.HibernatePersistence в файле persistence.xml.

vijayinani
источник
1

На вопрос уже дан ответ, но просто хотел опубликовать отзыв, который меня поддерживал. Это исключение выдается после предыдущих ошибок. Я получил это:

property toplink.platform.class.name is deprecated, property toplink.target-database should be used instead.

Хотя я изменил файл persistence.xml, добавив новое имя свойства:

<property name="toplink.target-database" value="oracle.toplink.platform.database.oracle.Oracle10Platform"/>

После сообщения об устаревшем имени свойства я получил то же исключение PersistenceException, что и выше, и целую строку исключений. Мой совет: обязательно проверьте начало колбасы исключения.

Кажется, есть ошибка в Glassfish v2.1.1, когда повторные развертывания или отмены развертывания и развертывания не обновляют файл persistence.xml, который где-то кэшируется. Я должен был перезагрузить сервер, и тогда это работало.

Rónán on Braonáin
источник
1

В OSGi-контексте необходимо перечислить ваши единицы персистентности в файле MANIFEST.MF пакета, например

JPA-PersistenceUnits: my-persistence-unit

В противном случае JPA-пакет не будет знать, что ваш пакет содержит единицы сохраняемости.

См. Http://wiki.eclipse.org/EclipseLink/Examples/OSGi/Developing_with_EclipseLink_OSGi_in_PDE .

schieferstapel
источник
1

Вам нужны следующие jar-файлы в classpath:

  1. ANTLR-2.7.6.jar
  2. Викисклад коллекция-3.1.jar
  3. dom4j-1.6.1.jar
  4. Hibernate-Викисклад аннотации-4.0.1.Final.jar
  5. Зимуют-ядро-4.0.1.Final.jar
  6. Зимуют-entitymanager.jar
  7. спящий режим JPA-2,0-апи-1.0.0.Final.jar-
  8. Javassist-3.9.0.jar
  9. JBoss-каротаж 3.1.1.GA.jar
  10. JTA-1.1.jar
  11. SLF4J-апи-1.5.8.jar
  12. ххх-driver.jar-JDBC
yeafee
источник
1

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

Закария Буацца
источник
1

Hibernate 5.2.5
Jar-файлы, необходимые в пути к классам. Это находится в требуемой папке Hibernate 5.2.5 Final Release. Его можно скачать с http://hibernate.org/orm/downloads/

  1. ANTLR-2.7.7
  2. КДИ-апи-1,1
  3. одноклассник-1.3.0
  4. dom4j-1.6.1
  5. эль-апи-2,2
  6. Джеронимо-jta_1.1_spec-1.1.1
  7. hibernate-commons-annotation-5.0.1.Final
  8. hibernate-core-5.2.5.Final
  9. hibernate-jpa-2.1-api-1.0.0.Final
  10. jandex-2.0.3.Final
  11. Javassist-3.20.0-GA
  12. javax.inject-1
  13. JBoss-перехватчик-api_1.1_spec-1.0.0.Beta1
  14. jboss-logging-3.3.0.Final
  15. jsr250-апи-1,0

Создайте XML-файл «persistence.xml» в

YourProject / SRC / META-INF / persistence.xml

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
         http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
         version="2.1">

<persistence-unit name="sample">

    <class>org.pramod.data.object.UserDetail</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/hibernate_project"/>
        <property name="hibernate.connection.username" value="root"/>
        <property name="hibernate.connection.password" value="root"/>
        <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.format_sql" value="false"/>

        <property name="hibernate.cache.use_second_level_cache" value="false"/>

        <property name="hibernate.archive.autodetection" value="true"/>
    </properties>
</persistence-unit>

  1. запишите информацию, указанную в теге <persistance>, и версия должна быть 2.1.
  2. обратите внимание на тег name <persistance-unit>, имя упоминается как «образец» . Это имя должно использоваться точно так же, когда вы загружаете

EntityManagerFactor = Persistance.createEntityManagerFactory ("образец"); , «образец» может быть изменен в соответствии с вашим соглашением об именах.

Теперь создайте класс Entity. с именем согласно моему примеру UserDetail, в пакете org.pramod.data.object

UserDetail.java

package org.pramod.data.object;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "user_detail")
public class UserDetail {
    @Id
    @Column(name="user_id")
    private int id;
    @Column(name="user_name")
    private String userName;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }   
    @Override
    public String toString() {
       return "UserDetail [id=" + id + ", userName=" + userName + "]";
    }
}

Теперь создайте класс с методом main.

HibernateTest.java

package org.pramod.hibernate;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.pramod.data.object.UserDetail;

public class HibernateTest {
    private static EntityManagerFactory entityManagerFactory;

    public static void main(String[] args)  {
        UserDetail user = new UserDetail();
        user.setId(1);
        user.setUserName("Pramod Sharma");

        try {
            entityManagerFactory = Persistence.createEntityManagerFactory("sample");
            EntityManager entityManager = entityManagerFactory.createEntityManager();
            entityManager.getTransaction().begin();
            entityManager.persist( user );
            entityManager.getTransaction().commit();
            System.out.println("successfull");
            entityManager.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

Выход будет

UserDetail [id=1, userName=Pramod Sharma]
Hibernate: drop table if exists user_details
Hibernate: create table user_details (user_id integer not null, user_name varchar(255), primary key (user_id))
Hibernate: insert into user_details (user_name, user_id) values (?, ?)
successfull
Праяг Шарма
источник
1

В моем случае ранее я использовал идею для создания сущности по схеме базы данных, и persistence.xmlона автоматически создается в src/main/java/META-INFсоответствии с https://stackoverflow.com/a/23890419/10701129 , я перемещаю ее вsrc/main/resources/META-INF , также помеченную META-INF как исходный корень. Меня устраивает.

Но просто пометка оригинального META-INF (то есть src / main / java / META-INF) как исходного корня не работает, что меня смущает.

и это структура: введите описание изображения здесь

fooool
источник
0

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

burseaner
источник
0

Моя проблема была решена путем добавления информации в файл 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>
Dhwaneel
источник
0

Проверьте постоянное имя устройства

<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

В моем случае речь шла об ошибке в двух свойствах, как показано ниже. Когда я их изменил, «Отсутствует поставщик сохраняемости для EntityManager с именем» исчез.

Таким образом, вы можете попробовать проверить соединение со своими свойствами, чтобы проверить, все ли правильно.

<property name="javax.persistence.jdbc.url" value="...”/>
<property name="javax.persistence.jdbc.password" value="...”/>

Странная ошибка, я был полностью растерян из-за этого.

Войтек Пирог
источник
0

Попробуйте также скопировать файл persistence.xml вручную в папку <project root>\bin\META-INF. Это исправило проблему в Eclipse Neon с EclipseLink 2.5.2использованием простого проекта плагина.

Klendatho
источник
0

Была такая же проблема, но на самом деле это сработало для меня:

mvn install -e  -Dmaven.repo.local=$WORKSPACE/.repository.

NB: команда maven выше переустановит все ваши зависимости проекта с нуля. Ваша консоль будет загружена подробными журналами из-за сетевого запроса, который делает maven.

Ким Сиси
источник