<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Ordinary hut

    人間一福地,勝似天仙宮
    posts - 61, comments - 50, trackbacks - 0, articles - 1
    getHibernateTemplate().getSessionFactory().getCurrentSession()的意思是得到當前線程 綁定的session,而當前線程綁定的session是通過當前的事務產生的,如果你沒有配置事務的話,當前線程threadlocal中就不存在 session,這樣就出現no session錯誤。

    而execute的回調方法,看源碼HibernateTemplate中寫道
        public Object execute(HibernateCallback action, boolean exposeNativeSession) throws DataAccessException {
            Assert.notNull(action, "Callback object must not be null");

        
        Session session = getSession();
        
        boolean existingTransaction = (!isAlwaysUseNewSession() &&
        
        (!isAllowCreate() || SessionFactoryUtils.isSessionTransactional(session, getSessionFactory())));
    其中getSession,代碼如下
        protected Session getSession() {
            
    if (isAlwaysUseNewSession()) {
                
    return SessionFactoryUtils.getNewSession(getSessionFactory(), getEntityInterceptor());
            }
            
    else if (isAllowCreate()) {
                
    return SessionFactoryUtils.getSession(
                getSessionFactory(), getEntityInterceptor(), getJdbcExceptionTranslator());
            }
            
    else {
                
    try {
                   
    return getSessionFactory().getCurrentSession();
                }
                
    catch (HibernateException ex) {
                    
    throw new DataAccessResourceFailureException("Could not obtain current Hibernate Session", ex);
                }
            }
        }
    其中默認private boolean alwaysUseNewSession = false,所以代碼會走到else if (isAllowCreate())
    注意這里:else if (isAllowCreate()),其中在HibernateTemplate類中默認private boolean allowCreate = true;
    意思說如果當前線程中的session不存在的話,是否允許創建,而默認是允許的,通過函數名字就很清楚,接下來是創建當前線程中的session的代碼,所以在沒有事務的狀態下,用execute回調方法,就不會出現上述問題。

    Feedback

    # re: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactiona  回復  更多評論   

    2011-09-09 14:17 by yiyi
    org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
    at org.springframework.orm.hibernate3.SpringSessionContext.currentSession(SpringSessionContext.java:63)
    at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:700)
    at org.springside.modules.orm.hibernate.SimpleHibernateDao.getSession(SimpleHibernateDao.java:90)
    at org.springside.modules.orm.hibernate.SimpleHibernateDao.createCriteria(SimpleHibernateDao.java:284)
    at org.springside.modules.orm.hibernate.SimpleHibernateDao.findUniqueBy(SimpleHibernateDao.java:165)
    at com.wisedu.mcp.services.SysLogService.getAppByService(SysLogService.java:128)
    at com.wisedu.mcp.services.SysLogService.appAccess(SysLogService.java:163)
    at com.wisedu.mcp.services.SysLogService$$FastClassByCGLIB$$33723ece.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:617)
    at com.wisedu.mcp.services.SysLogService$$EnhancerByCGLIB$$24e4ac56.appAccess(<generated>)
    at com.wisedu.mcp.filter.CommonFilter.doFilter(CommonFilter.java:90)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:440)
    at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:926)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

    # re: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactiona  回復  更多評論   

    2013-04-28 13:56 by lemon3135
    錯誤原因:
    通過定義好的sessionFactory的getCurrentSession()方法獲取當前線程中綁定的session,而當前線程綁定的session是通過當前的事務產生的,產生如上的錯誤是因為沒有配置事務。當前線程中沒創建session,則出現以上信息。
    主站蜘蛛池模板: 特黄特色大片免费| 亚洲日韩精品国产一区二区三区| 亚洲爆乳少妇无码激情| 日本免费网址大全在线观看 | 午夜免费1000部| 亚洲国产精品婷婷久久| 久久国产乱子免费精品| 亚洲国产一区二区a毛片| 久久青草免费91观看| 亚洲综合视频在线| 香蕉97超级碰碰碰免费公| 亚洲第一成人在线| 天天摸夜夜摸成人免费视频| 亚洲国产精品ⅴa在线观看| 国产福利免费观看| 成人免费乱码大片A毛片| 亚洲成亚洲乱码一二三四区软件| 四虎国产精品永久免费网址 | 亚洲gay片在线gv网站| 亚洲JIZZJIZZ中国少妇中文| 成在线人视频免费视频| 精品日韩亚洲AV无码| 成人性生活免费视频| 精品特级一级毛片免费观看| 在线观看午夜亚洲一区| 67pao强力打造高清免费| 亚洲AV综合色区无码一二三区| 五月婷婷亚洲综合| 一级毛片aaaaaa免费看| 亚洲夂夂婷婷色拍WW47| 亚洲乱码中文字幕手机在线| 高清一区二区三区免费视频| 在线综合亚洲中文精品| 亚洲成av人片不卡无码久久| 国产免费AV片在线观看| 亚洲欧美一区二区三区日产| 国产亚洲成归v人片在线观看 | 免费黄色大片网站| 三级网站免费观看| 久久无码av亚洲精品色午夜| 亚洲国产精品无码久久久蜜芽|