«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.