BeanCreationException spring hibernate jsf

BeanCreationException spring hibernate jsf,spring,hibernate,jsf,exception,maven,Spring,Hibernate,Jsf,Exception,Maven,所以我有一个巨大的更新。我终于让我的sessionFactory初始化,并且不为null。我还有(希望)最后一个问题 当我将数据存储在DAO文件中时,我得到了以下stacktrace javax.faces.el.EvaluationException: org.hibernate.HibernateException: No Session found for current thread at javax.faces.component.MethodBindingMethodExpr

所以我有一个巨大的更新。我终于让我的sessionFactory初始化,并且不为null。我还有(希望)最后一个问题

当我将数据存储在DAO文件中时,我得到了以下stacktrace

javax.faces.el.EvaluationException: org.hibernate.HibernateException: No Session found for current thread
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:101)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Caused by: org.hibernate.HibernateException: No Session found for current thread
    at org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:97)
    at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:941)
    at com.scott.common.CustomerDAO.saveToDb(CustomerDAO.java:25)
    at com.scott.common.CustomerBackingBean.save(CustomerBackingBean.java:65)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    ... 24 more


    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="backingBean" class="com.scott.common.CustomerBackingBean"
        scope="request">
        <property name="customer" ref="customerPojo" />
        <property name="customerDao" ref="customerDao" />
    </bean>

    <bean id="customerPojo" class="com.scott.common.Customer"></bean>


    <bean id="customerDao" class="com.scott.common.CustomerDAO">
        <property name="sessionFactory" ref="mySessionFactory" />
    </bean>

    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="mysql://localhost:3306/scottdb" />
        <property name="username" value="root" />
        <property name="password" value="root" />
    </bean>

    <bean id="mySessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="annotatedClasses">
            <list>
                <value>com.scott.common.Customer</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>

    <bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="mySessionFactory" />
    </bean>
</beans>




    package com.scott.common;

import org.hibernate.SessionFactory;

public class CustomerDAO 
{
    private SessionFactory sessionFactory;

    /**
     * @return the sessionFactory
     */
    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    /**
     * @param sessionFactory the sessionFactory to set
     */
    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    public void saveToDb(Customer customer)
    {
        getSessionFactory().getCurrentSession().save(customer);
    }


}
javax.faces.el.EvaluationException:org.hibernate.hibernateeException:未找到当前线程的会话
位于javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
位于com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:101)
在javax.faces.component.UICommand.broadcast(UICommand.java:315)
位于javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
位于javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
位于com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
位于com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
在com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)上
位于javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
运行(Thread.java:662)
原因:org.hibernate.HibernateException:未找到当前线程的会话
位于org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:97)
位于org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:941)
位于com.scott.common.CustomerDAO.saveToDb(CustomerDAO.java:25)
在com.scott.common.customerbackbean.save(customerbackbean.java:65)上
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.apache.el.parser.AstValue.invoke(AstValue.java:278)
位于org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
在com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)上
位于javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
... 还有24个
com.scott.common.Customer
org.hibernate.dialogue.mysqldialogue
真的
包com.scott.common;
导入org.hibernate.SessionFactory;
公共类客户道
{
私人会话工厂会话工厂;
/**
*@返回sessionFactory
*/
public SessionFactory getSessionFactory(){
返回工厂;
}
/**
*@param sessionFactory要设置的sessionFactory
*/
public void setSessionFactory(SessionFactory SessionFactory){
this.sessionFactory=sessionFactory;
}
公共作废保存TODB(客户)
{
getSessionFactory().getCurrentSession().save(客户);
}
}

由于当前pom文件仅使用了
hibernate核心
依赖项,因此似乎没有添加缓存扩展名

尝试将hibernate ehcache依赖项添加到pom文件:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-ehcache</artifactId>
    <version>4.1.7.Final</version>
</dependency>

org.hibernate
休眠ehcache
4.1.7.最终版本

看到异常跟踪后,我认为缺少一些hibernate依赖项。原因:java.lang.NoClassDefFoundError:org/hibernate/cache/CacheProvider。因此,相应的类无法实例化,导致bean创建异常。您也可以发布其他配置文件吗?如果不查看实际配置,很难判断问题出在哪里。感谢您的回复。我更新了我的帖子,加入了我的pom.xml谢谢,我加入了这个依赖项,但仍然有同样的问题。我在堆栈跟踪中看到它抱怨noclassdeffound缓存内容,所以我搜索了一下,他们告诉我将MySessionFactorybean类更改为class=“org.springframework.orm.hibernate4.LocalSessionFactoryBean”>。我这样做了,然后有一个错误说我没有我的@Entity的id。我把它拿了出来(因为我不知道它做了什么,所以我只是在学习教程,然后才宣布它)。服务器终于运行了,但是现在我有一个空指针异常。我调试了…我的sessionfactory变量未设置