Обнаружен устаревший javax.persistence.spi.PersistenceProvider

когда вы используете spring и Hibernate, вы когда-нибудь встречали предупреждение журнала, в котором говорится

WARN o.hibernate.ejb.HibernatePersistence - HHH015016: Обнаружен a устаревший javax.persistence.spi.PersistenceProvider [Org.hibernate.ejb.HibernatePersistence]; использование [org.hibernate.jpa.HibernatePersistenceProvider].

Как с этим справиться? Спасибо за любой ответ.

Ответ 1

Это должно быть

org.hibernate.jpa.HibernatePersistenceProvider

Посмотрите .

Устаревшие.

Используйте HibernatePersistenceProvider вместо

Ответ 2

Если вы работаете с Spring Data JPA и конфигурацией Java, вы сможете решить эту проблему, добавив следующий код в свой Entity Manager Factory:

factory.setPersistenceProvider(новый 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();
    }

Вы найдете хороший пример конфигурации Hibernate с Spring Data JPA здесь: http://spring.io/guides/tutorials/data/3/

Ответ 3

Если эта проблема возникла при работе с JPA Entity Manager в контексте Spring, имея тип транзакции = "RESOURCE_LOCAL" в файле persistence.xml.

Это не всегда ошибка. У меня на самом деле был настроен неверный провайдер.

Я просто изменил поставщика в persistence.xml из

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

к

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

и он отлично работает.

Обратите внимание, что пакет изменился с EJB на JPA

Ответ 4

Для пользователей, которые не используют SPRING:

Мы можем заменить стандартную загрузку javax.persistence специальным Hibernate.

Старый:

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

Новое:

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

Устаревшие предупреждения теперь должны исчезнуть. Проблема все еще присутствовала в 4.3.1.Final. В 5.1.0.Final это должно быть исправлено.

Ответ 5

Вы получите это сообщение, потому что класс org.hibernate.ejb.HibernatePersistence устарел. В моем файле persistence.xml я обнаружил, что класс поставщика имеет org.hibernate.ejb.HibernatePersistence, и я изменил его на org.hibernate.jpa.HibernatePersistenceProvider, как указано в предупреждающем сообщении 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>

Ответ 6

После изменения org.hibernate.ejb.HibernatePersistence на org.hibernate.jpa.HibernatePersistenceProvider в persistence.xml Измените также версию зависимости hibernate-entitymanager, получите последнюю версию 5.2.10. Финал, который исправил ошибку. Вот:

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

это сработало для меня

Ответ 7

Я изменил ссылку на:

org.hibernate.jpa.HibernatePersistenceProvider

но это не сработало.

Затем я удалил все ссылки на Hibernate 4.x jar libs, загрузил последнюю версию (5.2.7), затем добавил эти файлы jar и, наконец, работает.