简体   繁体   English

org.springframework.beans.factory.BeanCreationException:无法自动连线字段:私有org.hibernate.SessionFactory

[英]org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory

My application is on JDBCTemplate, but for 2 classes I have used Hibernate configuration. 我的应用程序在JDBCTemplate上,但是对于2个类,我使用了Hibernate配置。

I have already deployed that application on server on Tomcat7, it is running absolutely fine. 我已经在Tomcat7的服务器上部署了该应用程序,它运行得很好。

But when I am going to deploy same application on same server but on Tomcat 8, it is giving org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory. 但是,当我要在同一服务器上但在Tomcat 8上部署相同的应用程序时,则会出现org.springframework.beans.factory.BeanCreationException:无法自动装配字段:私有org.hibernate.SessionFactory。

servlet.xml: servlet.xml:

<?xml  version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
        http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
    <context:annotation-config />
    <context:component-scan base-package="applications" />
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="${email.hostName}" />
        <property name="port" value="${email.smtp}" />
        <property name="username" value="${email.emailId}" />
        <property name="password" value="${email.password}" />
        <property name="javaMailProperties">
            <props>
                <prop key="mail.transport.protocol">${email.transport.protocol}</prop>
                <prop key="mail.smtp.auth">${email.smtp.auth}</prop>
                <prop key="mail.smtp.starttls.enable">${email.smtp.starttls.enable}</prop>
            </props>
        </property>
    </bean>
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders" value="true" />
        <property name="locations">
            <list>
                <value>classpath:applications.properties</value>
            </list>
        </property>
    </bean>
    <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="prefixJson" value="false" />
        <property name="supportedMediaTypes" value="application/json" />
    </bean>
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- max file size in bytes -->
        <property name="maxUploadSize" value="2097152" />
        <!-- other properties... -->
    </bean>
    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${dbDriver}" />
        <property name="url" value="${dbUrl}" />
        <property name="username" value="${dbUsername}" />
        <property name="password" value="${dbPassword}" />
    </bean>


    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
        <constructor-arg ref="dataSource" />
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="packagesToScan" value="applications.model.hibernate"></property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
            </props>
        </property>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager" />
    <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>


    <import resource="scheduling-context.xml" />
    <mvc:annotation-driven />
</beans>

Error: 错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'custMgmtDaoImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory applications.custManagement.com.dao.impl.CustMgmtDaoImpl.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/application-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:834)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:667)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:633)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:681)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:552)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:493)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1144)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1091)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:983)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4939)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5249)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:754)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory applications.custManagement.com.dao.impl.CustMgmtDaoImpl.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/application-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:571)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
    ... 33 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/application-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1145)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1069)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:967)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:543)
    ... 35 more
Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
    at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:1087)
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:767)
    at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:245)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:222)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:265)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:692)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
    at org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:416)
    at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:401)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
    ... 45 more

custMgmntDaoImpl.classs: custMgmntDaoImpl.classs:

package applications.custManagement.com.dao.impl;

import java.text.SimpleDateFormat; 
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Conjunction;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import applications.custManagement.com.dao.CustmgmtDao;
import applications.model.AggrPOJO;
import applications.model.CustomerMasterB2B;
import applications.model.CustomerMgmnt;
import applications.model.LeadImport;
import applications.model.LeadMaster;
import applications.model.ReqParam;
import applications.model.hibernate.CustomerMaster;
import applications.utils.UtilityClass;

@Transactional
@Repository
public class CustMgmtDaoImpl implements CustmgmtDao {

    final static Logger logger = Logger.getLogger(CustMgmtDaoImpl.class);
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Autowired
    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public String customerDetailsSave(CustomerMaster customerMaster) {
        String result = "false";
        try {
            customerMaster.setModifiedDate(new Date());
            customerMaster.setModifiedBy(UtilityClass.getSessionData("XYZ"));
            Session session = sessionFactory.getCurrentSession();
            if (customerMaster.getToEdit()) {
                CustomerMaster oldObject = session.get(CustomerMaster.class, customerMaster.getPanNo());
                PropertyUtils.copyProperties(oldObject, customerMaster);
                session.saveOrUpdate(oldObject);
            } else {
                customerMaster.setCreatedBy(UtilityClass.getSessionData("XYZ"));
                customerMaster.setCreatedDate(new Date());
                session.save(customerMaster);
            }
            session.flush();
            result = "true";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
}

My deployment server is Linux server. 我的部署服务器是Linux服务器。 Both TOMCATs have different ports. 两个TOMCAT具有不同的端口。

Java Version - 1.8.0 Java版本-1.8.0

Tomcat Version - 8 ( same webApp is running fine on Tomcat7 on linux server and Tomcat 8 on localhost) Tomcat版本-8(同一Web应用在Linux服务器上的Tomcat7和本地主机上的Tomcat 8上运行良好)

Hibernate Version - 5 休眠版本-5

In my project, there is no pom.xml, as we have added following JARs, 在我的项目中,没有pom.xml,因为我们添加了以下JAR,

hibernate-jpa-2.1-api-1.0.0.Final.jar hibernate-jpa-2.1-api-1.0.0.Final.jar

hibernate-commons-annotations-4.0.3.final.jar hibernate-commons-annotations-4.0.3.final.jar

hibernate-core-5.1.0.Final.jar hibernate-core-5.1.0.Final.jar

spring-orm-4.2.0.RELEASE.jar spring-orm-4.2.0.RELEASE.jar

I have to solve this issue ASAP.Kindly help. 我必须尽快解决此问题。请帮忙。

Update your Hibernate JPA to 2.1 in your pom.xml or build.gradle pom.xmlbuild.gradle中将 Hibernate JPA更新为2.1

<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.1-api</artifactId>
    <version>1.0.0.Final</version>
</dependency>

Also, make sure you have only one hibernate-jpa-api in your classpath. 另外,请确保您的类路径中只有一个hibernate-jpa-api。

To check this run this command 要检查此运行此命令

mvn dependency:tree

If you have multiple exclude the excess one. 如果您有多个,则排除多余的一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 无法自动连线-org.springframework.beans.factory.BeanCreationException - Could not autowire - org.springframework.beans.factory.BeanCreationException 无法自动连线字段:私有org.hibernate.SessionFactory Hibernate和Spring - Could not autowire field: private org.hibernate.SessionFactory Hibernate and Spring 嵌套的异常是org.springframework.beans.factory.BeanCreationException:无法自动连接静态Web服务中的字段 - nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field in restful web services 自动连接的依赖项注入失败; 嵌套的异常是org.springframework.beans.factory.BeanCreationException:无法自动装配字段: - Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: spring boot org.springframework.beans.factory.BeanCreationException:无法自动装配字段: - spring boot org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.springframework.beans.factory.BeanCreationException:NoClassDefFoundError:无法初始化类org.hibernate.ann - org.springframework.beans.factory.BeanCreationException: NoClassDefFoundError: Could not initialize class org.hibernate.ann Hibernate 4 + Spring:org.springframework.beans.factory.BeanCreationException - Hibernate 4 + Spring : org.springframework.beans.factory.BeanCreationException Spring + Hibernate + Gradle-&gt; org.springframework.beans.factory.BeanCreationException - spring + hibernate + gradle -> org.springframework.beans.factory.BeanCreationException Spring + Hibernate中的org.springframework.beans.factory.BeanCreationException - org.springframework.beans.factory.BeanCreationException in Spring+Hibernate org.springframework.beans.factory.BeanCreationException错误 - Error with org.springframework.beans.factory.BeanCreationException
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM