Перейти к основному содержимому

Ошибка гибернации «Нет поставщика постоянства для EntityManager»

· 2 мин. чтения

1. Введение

В этом руководстве мы увидим, как решить распространенную ошибку Hibernate — «Нет поставщика сохраняемости для EntityManager». Проще говоря, поставщик сохраняемости относится к конкретной реализации JPA, используемой в нашем приложении для сохранения объектов в базе данных.

Чтобы узнать больше о JPA и его реализациях, мы можем обратиться к нашей статье о разнице между JPA, Hibernate и EclipseLink .

2. Что вызывает ошибку

Мы увидим ошибку, когда приложение не знает, какой поставщик сохраняемости следует использовать .

Это происходит, когда поставщик сохраняемости не упоминается ни в файле persistence.xml , ни настроен в классе реализации PersistenceUnitInfo .

3. Исправление ошибки

Чтобы исправить эту ошибку, нам просто нужно определить поставщика постоянства в `` файле persistence.xml :

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

Или, если мы используем Hibernate версии 4.2 или старше :

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

В случае, если мы реализовали интерфейс PersistenceUnitInfo в нашем приложении, мы также должны переопределить метод

getPersistenceProviderClassName() :

@Override
public String getPersistenceProviderClassName() {
return HibernatePersistenceProvider.class.getName();
}

Чтобы обеспечить доступность всех необходимых JAR-файлов Hibernate, важно добавить зависимость hibernate-core в файл pom.xml :

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>

4. Вывод

Подводя итог, мы рассмотрели возможные причины ошибки Hibernate «Нет поставщика сохраняемости для EntityManager» и различные способы ее решения.

Как обычно, пример проекта Hibernate доступен на GitHub .