Ошибка: класс org.hibernate.ejb.HibernatePersistence имеет интерфейс org.hibernate.ejb.AvailableSettings в качестве суперкласса - PullRequest
0 голосов
/ 29 марта 2019

Я использую Hibernate 5.3.1.Final и пытаюсь подключиться к Oracle в своем проекте maven.Проекты создаются просто отлично, но когда я запускаю его, я получаю ошибку ниже.

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaVendorAdapter' defined in file
 [C:\liferay-portal-6.1.1-ce-ga2\tomcat-7.0.27\temp\KIR\WEB-INF\classes\context\spring-context.xml]:
 Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: 
 Could not instantiate bean class [org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter]: 
 Constructor threw exception; nested exception is 
 java.lang.IncompatibleClassChangeError: class org.hibernate.ejb.HibernatePersistence has interface org.hibernate.ejb.AvailableSettings as super class
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1007)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:953)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:323)
        ... 41 more

Bean в spring-context.xml

<bean id="jpaVendorAdapter"
        class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="database" value="ORACLE" />
        <property name="showSql" value="false" />
        <property name="generateDdl" value="false" />
        <property name="databasePlatform"
            value="org.hibernate.dialect.Oracle10gDialect" />
    </bean>

Ниже представлены файлы спящего режима и спящий режим.

hibernate-commons-annotations-5.0.3.Final.jar
hibernate-core-5.3.1.Final.jar
hibernate-entitymanager-5.3.1.Final.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate-validator-5.0.1.Final.jar
javax.persistence-api-2.2.jar

Может кто-нибудь сказать мне, есть ли конфликт между этими банками и нужны ли все эти баночки в первую очередь?

Java 1.8

Обновление --

Удаление определенных jiber hibernate4.1.10 (ядро, фабрика менеджера сущностей) выдает ошибку

 class not found :  org.hibernate.ejb.HibernatePersistence

Я использую этот класс в своем постоянном модуле

Постоянный модуль

<persistence-unit name="kirPU" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <mapping-file>\META-INF\orm.xml</mapping-file> 
</persistence-unit>

Отсутствует ли этот класс в банках Hibernate 5.3.1.FINAL?

Обновление 2

После изменения поставщика на <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

Я получаю ошибку ниже:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in file [C:\liferay-portal-6.1.1-ce-ga2\tomcat-7.0.27\temp\0-KIR\WEB-INF\classes\context\spring-context.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.integrator.internal.IntegratorServiceImpl.<init>(Ljava/util/LinkedHashSet;Lorg/hibernate/boot/registry/classloading/spi/ClassLoaderService;)V
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1482)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:439)
        at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:277)
        at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators(PersistenceExceptionTranslationInterceptor.java:139)
        at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.<init>(PersistenceExceptionTranslationInterceptor.java:79)
        at org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor.<init>(PersistenceExceptionTranslationAdvisor.java:71)
        at org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory(PersistenceExceptionTranslationPostProcessor.java:85)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1502)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1470)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
        ... 23 more
Caused by: java.lang.NoSuchMethodError: org.hibernate.integrator.internal.IntegratorServiceImpl.<init>(Ljava/util/LinkedHashSet;Lorg/hibernate/boot/registry/classloading/spi/ClassLoaderService;)V

Компонент EntityMangerFactory в spring-context.xml

<bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="persistenceUnitName" value="kirPU" />
</bean>

внутри pom.xml

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
            <exclusions>
            <exclusion>  
              <groupId>org.hibernate</groupId>
              <artifactId>hibernate-entitymanager</artifactId>
            </exclusion>
            <exclusion>  
              <groupId>org.hibernate</groupId>
              <artifactId>hibernate-core</artifactId>
            </exclusion>
            <exclusion>  
              <groupId>org.hibernate</groupId>
              <artifactId>hibernate-annotations</artifactId>
            </exclusion>
      </exclusions> 
        </dependency>

SpringВерсия: <spring.version>3.2.3.RELEASE</spring.version>

Сделано исключение, потому что в противном случае я получал дубликаты версий банок гибернации.

1 Ответ

1 голос
/ 29 марта 2019

Класс org.hibernate.ejb.HibernatePersistence является частью библиотеки lib hibernate-entitymanager-3.5.0-Final.jar (или старше), которая должна находиться где-то в вашем пути к классам. Вам придется удалить его.

Возможно, вам, вашей IDE или серверу приложений не удалось очистить целевую папку развертывания после того, как вы обновили свой проект для использования Hibernat 5.

Что касается persistence.xml, вам нужно будет перенести его в соответствии с документацией обновленной спящей версии. org.hibernate.jpa.HibernatePersistenceProvider это фактический provider класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...