Обнаружен устаревший 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].

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

4b9b3361

Если вы работаете с 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/

14
ответ дан 16 июня '14 в 23:51
источник

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

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

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

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

к

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

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

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

7
ответ дан 02 нояб. '14 в 14:23
источник

Для пользователей, которые не используют 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
ответ дан 12 февр. '16 в 13:06
источник

Вы получите это сообщение, потому что класс 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>
2
ответ дан 30 июня '15 в 10:41
источник

После изменения 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

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

1
ответ дан 21 июня '17 в 2:40
источник

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

org.hibernate.jpa.HibernatePersistenceProvider

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

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

0
ответ дан 27 янв. '17 в 21:26
источник