`

org.hibernate.HibernateException: No Session found for current thread

 
阅读更多

Spring3.1.1 Intergrate with Hibernate 4.0.1 occurs the

 

org.hibernate.HibernateException: No Session found for current thread

 

In the applicationContext.xml configuration:

 

this configuration should like this

 

<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="get*" read-only="true" propagation="REQUIRED"/>
			<tx:method name="*" propagation="REQUIRED"/>
		</tx:attributes>
</tx:advice>

 

it seems that propagation set values[SUPPORTS|NOT_SUPPORTED|NEVER] will issue

 

No Session found for the current thread

分享到:
评论
1 楼 jinnianshilongnian 2012-04-02  
这个问题 在我的这篇帖子中提到过http://www.iteye.com/topic/1120924



补充spring3.1.1源代码分析当 传播行为为 Support时报 org.hibernate.HibernateException: No Session found for current thread 异常:

spring3.1开始 不提供(没有这个东西了)Hibernate4的 DaoSupport和Template,,而是直接使用原生的Hibernate4 API

如在 Hibernate3中 HibernateTemplate中有如下代码
Java代码  
protected Session getSession() { 
        if (isAlwaysUseNewSession()) { 
            return SessionFactoryUtils.getNewSession(getSessionFactory(), getEntityInterceptor()); 
        } 
        else if (isAllowCreate()) {//默认是true,也就是即使你的传播行为是Supports也一定会有session存在的 
            return SessionFactoryUtils.getSession( 
                    getSessionFactory(), getEntityInterceptor(), getJdbcExceptionTranslator()); 
        } 
        else if (SessionFactoryUtils.hasTransactionalSession(getSessionFactory())) { 
            return SessionFactoryUtils.getSession(getSessionFactory(), false); 
        } 
        else { 
            try { 
                return getSessionFactory().getCurrentSession(); 
            } 
            catch (HibernateException ex) { 
                throw new DataAccessResourceFailureException("Could not obtain current Hibernate Session", ex); 
            } 
        } 
    } 

但我们使用的是Hibernate4原生API,使用SpringSessionContext获取session,而这个isAllowCreate选项默认为false

Java代码  
/**
* Retrieve the Spring-managed Session for the current thread, if any.
*/ 
public Session currentSession() throws HibernateException { 
    try { 
        return (org.hibernate.classic.Session) SessionFactoryUtils.doGetSession(this.sessionFactory, false);//最后的false即是 
    } 
    catch (IllegalStateException ex) { 
        throw new HibernateException(ex.getMessage()); 
    } 




SessionFactoryUtils类
Java代码  
public static Session doGetSession(SessionFactory sessionFactory, boolean allowCreate) 
        throws HibernateException, IllegalStateException { 
 
    return doGetSession(sessionFactory, null, null, allowCreate); 


可否认为这是集成Hibernate4的bug,或者采用OpenSessionInView模式解决或者传播行为最低为Required。


相关推荐

    org.hibernate.HibernateException: No Hibernate Session bound to thread

    然而,在使用 Hibernate 进行数据库操作时,经常会遇到 "No Hibernate Session bound to thread" 的错误信息。本文将详细介绍该错误的解决方案。 错误原因 "No Hibernate Session bound to thread" 错误信息通常是...

    解决SpringDataJPA报错:org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null w

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/...

    Spring4.0+Hibernate4.0+Struts2.3整合案例

    2、报错:org.hibernate.HibernateException: No Session found for current thread 意思是必须在transcation.isActive()条件下才能执行, 可以解决办法是:当方法不需要事务支持的时候,使用 Session ...

    HIbernate4.3.6整合c3p0所需jar

    Caused by: org.hibernate.HibernateException: Could not instantiate connection provider [org.hibernate.connection.C3P0ConnectionProvider] at org.hibernate.engine.jdbc.connections.internal....

    jdbc+hibernate的jar包

    3. `org.hibernate.HibernateException`:Hibernate抛出的异常类。 4. `org.hibernate.Query`和`org.hibernate Criteria`:用于执行HQL(Hibernate Query Language)和Criteria API查询,比直接使用SQL更加灵活。 ...

    com.microsoft.sqlserver.jdbc.SQLServerException: 只进结果集不支持请求的操作 解决方案

    query.setHint("org.hibernate.fetchSize", 20); // 设置查询结果集大小 query.setFetchSize(20); List&lt;Game&gt; games = query.list(); tx.commit(); } catch (HibernateException e) { if (tx != null) { tx....

    Hibernate+Proxool配置

    由于项目需求的需要,我们引入了连接池。...我们采用了Hibernate,所以可以考虑hibernate自带的连接池机制,但是发现效率不高,而且Hibernate也推荐使用c3p0或Proxool连接池,在我们的项目中采用了Proxool

    Hibernate配置常见错误

    错误表现:在Session关闭后尝试访问懒加载属性,抛出“org.hibernate.LazyInitializationException: could not initialize proxy - no Session”异常。 解决方案:理解并合理使用Open Session in View(OSIV)模式...

    hibernate测试时遇到的几个异常及解决方法汇总

    3. org.hibernate.HibernateException: No CurrentSessionContext configured! 该异常的解决方法是添加 hibernate-jpa-2.0-api-1.0.0.Final.jar。这是因为 Hibernate 需要配置 CurrentSessionContext,以便正确地...

    J2EE利用Hibernate采用B/S架构网页设计

    import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Configuration; /** * Configures and provides access to Hibernate sessions, tied to the * current ...

    spring_MVC源码

    18. class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"&gt; 19. &lt;property name="dataSource" ref="dataSource" /&gt; 20. &lt;property name="hibernateProperties"&gt; 21. &lt;props&gt; 22...

    Hibernate源代码分析

    public org.hibernate.classic.Session getCurrentSession() throws HibernateException { if (currentSessionContext == null) { throw new HibernateException("No CurrentSessionContext configured!"); } ...

    Hibernate开发必备版

    import org.hibernate.HibernateException; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; ``` 2. **类声明:** ```java public class HibernateUtil { ``` 3. **静态...

    学习hibernate第一章内容

    5. 异常体系:理解Hibernate的异常体系,如HibernateException、ConstraintViolationException等。 6. Session和Transaction:理解Session的生命周期和事务管理,以及它们在实际应用中的最佳实践。 本章作为...

    JAVA错误文档.pdf

    4. Hibernate框架错误:文档还包含了“org.hibernate.HibernateException: No Hibernate Session bound to thread”等错误信息,这是Hibernate框架常见的异常,表明在当前线程上没有绑定Hibernate Session。...

    hibernate错误汇总

    错误八:Exception in thread "main" org.hibernate.HibernateException: More than one row with the given identifier was found: 1, for class: org.model.User 错误原因:这个错误表示在尝试获取主键为1的实体...

    Jbuilder里配置Hibernate

    &lt;property name="current_session_context_class"&gt;thread &lt;!-- Echo all executed SQL to stdout --&gt; &lt;property name="show_sql"&gt;true &lt;!-- Drop and re-create the database schema on startup --&gt; ...

    hibernate-release-5.4.25.Final_Hibernate5.4.25_hibernate所需jar包_源

    5. 异常处理:Hibernate将SQL异常转换为特定的HibernateException,便于理解和处理。 总之,Hibernate 5.4.25为Java开发者提供了强大的数据持久化解决方案,通过合理的jar包配置和应用,可以极大地提升开发效率,...

Global site tag (gtag.js) - Google Analytics