Slaapstandfout 'No Persistence Provider for EntityManager'

1. Inleiding

In deze tutorial zullen we zien hoe we een veelvoorkomende Hibernate-fout kunnen oplossen - "No persistence provider for EntityManager". Simpel gezegd, persistentieleverancier verwijst naar de specifieke JPA-implementatie die in onze applicatie wordt gebruikt om objecten in de database te behouden.

Voor meer informatie over JPA en de implementaties ervan, kunnen we ons artikel over het verschil tussen JPA, Hibernate en EclipseLink raadplegen.

2. Wat veroorzaakt de fout?

We zien de fout wanneer de applicatie weet niet welkepersistence provider moet worden gebruikt.

Dit gebeurt wanneer de persistentieprovider niet wordt vermeld in het persistence.xml bestand noch geconfigureerd in het PersistenceUnitInfo implementatie klasse.

3. De fout oplossen

Om deze fout op te lossen, hoeven we dit alleen maar te doen definieer de persistentieprovider in het persistence.xml het dossier:

org.hibernate.jpa.HibernatePersistenceProvider

Of, als we gebruiken Slaapstand versie 4.2 of ouder:

org.hibernate.ejb.HibernatePersistence

Voor het geval we het PersistenceUnitInfo interface in onze applicatie, moeten we ook de

getPersistenceProviderClassName () methode:

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

Om ervoor te zorgen dat alle benodigde Hibernate-potten beschikbaar zijn, is het belangrijk om de slaapstand-core afhankelijkheid in de pom.xml het dossier:

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

4. Conclusie

Samenvattend hebben we de mogelijke oorzaken van de Hibernate-fout "No persistence provider for EntityManager" gezien en verschillende manieren om deze op te lossen.

Zoals gewoonlijk is het voorbeeld van het Hibernate-project beschikbaar op GitHub.