Trong bài viết này chúng ta sẽ tìm cách fix một lỗi thường gặp bước đầu làm quen với JPA – Hibernate – “No persistence provider for EntityManager”.
Lỗi này là do JPA chỉ là các API cung cấp các interface quy định cách làm việc với database, vì vậy nó cần một JPA prodiver implement các interface này. Các JPA Provider nổi tiếng có thể kể đến là Hibernate, EclipseLink.
Nguyên nhân gây lỗi
Khi chúng ta gặp phải lỗi này, nghĩa là khi cấu hình dự án bạn đã không chỉ định JPA Provider cần thiết để sử dụng. Trong trường hợp này chúng ta cần chỉ định nó thông qua persistence.xml file hoặc PersistenceUnitInfo implementation class.
Cách sửa lỗi
Để giải quyết lỗi này đơn giản chúng ta chỉ cần chỉ định JPA provider trong file cấu hình JPA – persistence.xml.
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
Hoặc nếu bạn đang sử dụng Hibernate phiên bản 4.2 hoặc thấp hơn thì
<provider>org.hibernate.ejb.HibernatePersistence</provider>
Trong trường hợp bạn cấu hình dự án bằng cách triển khai PersistenceUnitInfo interface. Bạn cần override getPersistenceProviderClassName() method.
@Override public String getPersistenceProviderClassName() { return HibernatePersistenceProvider.class.getName(); }
Để chắc chắn tất cả các triển khai của hibernate đã sẵn sàng trong dự án của bạn, hãy thêm hibernate-core denpendency vào maven.
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency>
Tóm lược
Trên đây là một lỗi thường gặp phải đối với những bạn bước đầu làm quen với JPA – Hibernate. Qua bài viết này mong rằng các bạn có thể giải quyết vấn đề một cách nhanh chóng hơn.
Nguồn tham khảo