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 .