当您使用Spring和Hibernate时,是否遇到过这样的日志警告:警告o.休眠.ejb.休眠持久性-HHH 015016:遇到了已弃用的javax.persistence.spi.持久性提供程序[org. hib.ejb. Hibernate持久性];请使用[组织.休眠.jpa.休眠持久性提供者]。如何处理?谢谢你的回答。
pkln4tw61#
应该是
org.hibernate.jpa.HibernatePersistenceProvider
看一看this。
已过时。
请改用HibernatePersistenceProvider
kx7yvsdv2#
如果您正在使用Spring Data JPA和Java配置,则可以通过在实体管理器工厂中添加以下代码来解决此问题:(新建休眠持久性提供者());**
@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(); }
您可以在以下位置找到使用Spring Data JPA进行Hibernate配置的一个很好的示例:http://spring.io/guides/tutorials/data/3/
btqmn9zl3#
对于未使用SPRING的用户:我们可以将标准的 * javax.persistence * 引导替换为特定于Hibernate的引导。旧版:
EntityManagerFactory emf = Persistence.createEntityManagerFactory( PERSISTENCE_UNIT, props );
新产品:
PersistenceProvider provider = new HibernatePersistenceProvider(); EntityManagerFactory emf = provider.createEntityManagerFactory( PERSISTENCE_UNIT, props);
llew8vvj4#
在Spring上下文中使用JPA的实体管理器时出现此问题,persistence.xml中的事务类型为“RESOURCE_LOCAL”。这并不总是一个bug。我实际上配置了错误的提供程序。我刚刚将persistence.xml中的提供程序从
<provider>org.hibernate.ejb.HibernatePersistence</provider>
至
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
而且效果很好。请注意,包已从EJB更改为JPA
g6ll5ycj5#
你得到这个消息是因为类org.hibernate.ejb.HibernatePersistence被弃用了。在我的persistence.xml文件中,我发现提供者类有org.hibernate.ejb.HibernatePersistence,我把它改成了org.hibernate.jpa.HibernatePersistenceProvider,正如stacktrace警告消息中提到的。persistence.xml
org.hibernate.ejb.HibernatePersistence
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>
7rfyedvj6#
在persistence.xml中将org.hibernate.ejb.HibernatePersistence更改为org.hibernate.jpa.HibernatePersistenceProvider后,同时更改hibernate-entitymanager依赖项版本,获得最新版本5.2.10。最终版本修复了bug。如下所示:http://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager/5.2.10.Final对我很有效
hibernate-entitymanager
irtuqstp7#
我将引用更改为:
但没有成功。然后我删除了所有对Hibernate 4.x jar库的引用,下载了最后一个版本(5.2.7),然后添加了这个jar文件,它终于工作了。
tyg4sfes8#
如果您正在创建一个Has-A关系,并且忘记提到@Embedded,那么它将抛出相同的错误。线程“main”javax.persistence出现异常。持久性异常:在javax.persistence.持久性.创建实体管理器工厂(Persistence.java:85)中没有名为TEST的实体管理器的持久性提供程序
8条答案
按热度按时间pkln4tw61#
应该是
看一看this。
已过时。
请改用HibernatePersistenceProvider
kx7yvsdv2#
如果您正在使用Spring Data JPA和Java配置,则可以通过在实体管理器工厂中添加以下代码来解决此问题:
(新建休眠持久性提供者());**
您可以在以下位置找到使用Spring Data JPA进行Hibernate配置的一个很好的示例:http://spring.io/guides/tutorials/data/3/
btqmn9zl3#
对于未使用SPRING的用户:
我们可以将标准的 * javax.persistence * 引导替换为特定于Hibernate的引导。
旧版:
新产品:
llew8vvj4#
在Spring上下文中使用JPA的实体管理器时出现此问题,persistence.xml中的事务类型为“RESOURCE_LOCAL”。
这并不总是一个bug。我实际上配置了错误的提供程序。
我刚刚将persistence.xml中的提供程序从
至
而且效果很好。
请注意,包已从EJB更改为JPA
g6ll5ycj5#
你得到这个消息是因为类
org.hibernate.ejb.HibernatePersistence
被弃用了。在我的persistence.xml
文件中,我发现提供者类有org.hibernate.ejb.HibernatePersistence
,我把它改成了org.hibernate.jpa.HibernatePersistenceProvider
,正如stacktrace警告消息中提到的。persistence.xml
7rfyedvj6#
在
persistence.xml
中将org.hibernate.ejb.HibernatePersistence
更改为org.hibernate.jpa.HibernatePersistenceProvider
后,同时更改hibernate-entitymanager
依赖项版本,获得最新版本5.2.10。最终版本修复了bug。如下所示:http://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager/5.2.10.Final
对我很有效
irtuqstp7#
我将引用更改为:
但没有成功。
然后我删除了所有对Hibernate 4.x jar库的引用,下载了最后一个版本(5.2.7),然后添加了这个jar文件,它终于工作了。
tyg4sfes8#
如果您正在创建一个Has-A关系,并且忘记提到@Embedded,那么它将抛出相同的错误。
线程“main”javax.persistence出现异常。持久性异常:在javax.persistence.持久性.创建实体管理器工厂(Persistence.java:85)中没有名为TEST的实体管理器的持久性提供程序