Грешка в хибернация „Няма доставчик на постоянство за EntityManager“

1. Въведение

В този урок ще видим как да разрешим често срещана грешка в хибернация - „Няма доставчик на постоянство за EntityManager“. Най-просто казано, доставчикът на постоянство се позовава на конкретната реализация на JPA, използвана в нашето приложение за персистиране на обекти в базата данни.

За да научите повече за JPA и нейните внедрения, можем да се обърнем към нашата статия за разликата между JPA, Hibernate и EclipseLink.

2. Какво причинява грешката

Ще видим грешката, когато приложението не знае кой доставчик на постоянство трябва да се използва .

Това се случва, когато доставчикът на постоянство не е нито споменат във файла persistence.xml, нито е конфигуриран в класа за изпълнение на PersistenceUnitInfo .

3. Коригиране на грешката

За да коригираме тази грешка, просто трябва да дефинираме доставчика на постоянство във файла persistence.xml :

org.hibernate.jpa.HibernatePersistenceProvider

Или ако използваме Hibernate версия 4.2 или по-стара :

org.hibernate.ejb.HibernatePersistence

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

метод getPersistenceProviderClassName () :

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

За да сте сигурни, че всички необходими буркани за хибернация са налични, е важно да добавите зависимостта от хибернация-ядро във файла pom.xml :

 org.hibernate hibernate-core ${hibernate.version} 

4. Заключение

За да обобщим, видяхме възможните причини за грешката в хибернация „Няма доставчик на постоянство за EntityManager“ и различни начини за нейното разрешаване.

Както обикновено, примерният проект за хибернация е достъпен в GitHub.