web-dev-qa-db-fra.com

Rencontré un javax.persistence.spi.PersistenceProvider obsolète

lorsque vous utilisez Spring & Hibernate, avez-vous déjà rencontré un avertissement de journal indiquant

WARN o.hibernate.ejb.HibernatePersistence - HHH015016: a rencontré un obsolète javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; utilisez plutôt [org.hibernate.jpa.HibernatePersistenceProvider].

Comment gérer ça? Merci pour toute réponse.

27
eaststrong

Ça devrait être

org.hibernate.jpa.HibernatePersistenceProvider

Jetez un oeil à this .

Obsolète.

Utilisez HibernatePersistenceProvider à la place

29
Andre Hofmeister

Si vous travaillez avec Spring Data JPA et Java Configuration, vous pourrez le résoudre en ajoutant le code suivant dans votre Entity Manager Factory:

factory.setPersistenceProvider (nouveau HibernatePersistenceProvider ());

@Bean
    public EntityManagerFactory entityManagerFactory() throws SQLException {

      HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
      vendorAdapter.setGenerateDdl(true);
      vendorAdapter.setShowSql(true);

      LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
      factory.setJpaVendorAdapter(vendorAdapter);
      **factory.setPersistenceProvider(new HibernatePersistenceProvider());**
      factory.setPackagesToScan("com.company.appname.persistence.domain");
      factory.setDataSource(dataSource());

      factory.setJpaProperties(hibernateProperties());
      factory.afterPropertiesSet();

      return factory.getObject();
    }

Vous trouverez un bon exemple de configuration Hibernate avec Spring Data JPA ici: http://spring.io/guides/tutorials/data/3/

14
isma.imc

J'ai rencontré ce problème lors de l'utilisation du gestionnaire d'entités de JPA dans le contexte Spring, avec transaction-type = "RESOURCE_LOCAL" dans persistence.xml.

Ce n'est pas toujours un bug. En fait, j'avais le mauvais fournisseur configuré.

Je viens de changer le fournisseur dans persistence.xml de

<provider>org.hibernate.ejb.HibernatePersistence</provider>

à

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

et ça marche bien.

Notez que le package est passé de EJB à JPA

8
cripox

Pour les utilisateurs qui n'utilisent pas SPRING:

Nous pouvons remplacer le bootstrap standard javax.persistence par un bootstrap spécifique à Hibernate.

Vieux:

EntityManagerFactory emf = Persistence.createEntityManagerFactory(
    PERSISTENCE_UNIT, props );

Nouveau:

PersistenceProvider provider = new HibernatePersistenceProvider();
EntityManagerFactory emf = provider.createEntityManagerFactory(
   PERSISTENCE_UNIT, props);

Les avertissements obsolètes devraient maintenant disparaître. Le problème était toujours présent dans 4.3.1.Final. Dans 5.1.0.Final il devrait être corrigé.

8
Hubert Kauker

Vous obtenez ce message car la classe org.hibernate.ejb.HibernatePersistence est obsolète. Sous mon persistence.xml fichier J'ai trouvé que la classe de fournisseur avait org.hibernate.ejb.HibernatePersistence et je l'ai changé en org.hibernate.jpa.HibernatePersistenceProvider comme mentionné dans le message d'avertissement stacktrace.

persistence.xml

<persistence-unit name="personPersistenceUnit" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <class>Person</class>
    <properties>
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/db_name"/>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />
        ....
    </properties>
</persistence-unit>
3
Lucky

Après avoir changé votre org.hibernate.ejb.HibernatePersistence à org.hibernate.jpa.HibernatePersistenceProvider dans le persistence.xml Modifiez également le hibernate-entitymanager version de dépendance, obtenez la dernière version 5.2.10 . Final qui a corrigé le bogue. Voici:

http://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager/5.2.10.Final

ça a marché pour moi

1
user8191252

J'ai changé la référence en:

org.hibernate.jpa.HibernatePersistenceProvider

mais ça n'a pas marché.

Ensuite, j'ai supprimé toutes les références aux bibliothèques jar Hibernate 4.x, téléchargé la dernière version (5.2.7), puis ajouté ces fichiers jar et cela fonctionne enfin.

0
gralVilla