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