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.