(я знаю, что этот вопрос задавался ранее, но никогда не для Spring 5.x)
Я только что подобрал большое приложение Spring и получил задачу обновить Spring 3.2.16 до 5.0.6.,В связи с этим я также изменяю наш OpenJpa на Hibernate, потому что OpenJPA больше не поддерживается Spring (а версия 3 еще не выпущена, как мне кажется).
, поэтому мои зависимости
- Spring 5.0.6.RELEASE
- hibernate-jpa-2.1-api 1.0.0.Final
- hibernate-core 5.3.1.Final
Я получаю следующее исключение:
Caused by: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'dataSource' threw exception; nested exception is java.lang.NoClassDefFoundError: org/hibernate/ejb/HibernatePersistence
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:101)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:57)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1452)
Конфигурация выглядит как
<bean id="ums.entityManagerFactory"
class="com.company.package.HibernateJPAEntityManagerFactoryBean"
destroy-method="destroy">
<property name="dataSource" ref="persistenceDataSource" />
<property name="persistenceUnitName" value="ums"/>
<property name="persistenceXmlLocation" value="classpath:META-INF/ums-persistence.xml" />
</bean>
<bean id="persistenceDataSource"
class="com.company.package.AutoDriverBasicDataSource">
<property name="url" value="jdbc:h2:data/persistence/persistence" />
<property name="username" value="<username>" />
<property name="password" value="<password>" />
</bean>
В setDataSource ofнаш entiyManager мы установили новый HibernateJpaDialect () и новый HibernateJpaVendorAdapter () .
hibernate-core имеет пакет org.hibernate.ejb , но без класса HibernatePersistence .