java - Sping管理hibernate时的事务问题(No Hibernate Session bound to thread)
怪我咯
怪我咯 2017-04-17 13:30:00
[Java讨论组]

报错:Exception in thread "main" 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:685)
at cn.itcast.oa.util.Installer.install(Installer.java:24)
at cn.itcast.oa.util.Installer.main(Installer.java:88)

报错代码片段:

Java代码:
@Component
public class Installer {

@Resource
private SessionFactory sessionFactory;

@Transactional
private void install(){
    Session session = sessionFactory.getCurrentSession();
    //保存超级管理员账户
    User user = new User();
    user.setLoginName("admin");
    user.setName("超级管理员");
    user.setPassword(DigestUtils.md5Hex("admin"));

    session.save(user);

    //保存权限数据
    Privilege menu, menu1, menu2, menu3, menu4, menu5;

    //=====
    menu= new Privilege("系统管理", null, null);
    menu1= new Privilege("岗位管理", "/role_list", menu);
    menu2= new Privilege("部门管理", "/department_list", menu);
    menu3= new Privilege("用户管理", "/user_list", menu);       
    session.save(menu);
    session.save(menu1);
    session.save(menu2);
    session.save(menu3);

}

public static void main(String[] args) {
    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    Installer installer =  (Installer) ac.getBean("installer");
    installer.install();
}

}

Spring配置文件:

  
  

  
  
     
     
         

             
             
             
             

             
            
              
            
              
            
              
            
              
            
              
            
              
            
             

         
     
  
  
  
     
  
  

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
高洛峰

报错:Exception in thread "main" org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

报错很明显了,然后你的评论问题为什么opensession可以?
推荐你2个帖子看一下SSH中使用getCurrentSession()获得session
getCurrentSession 与 openSession() 的区别 ,虽然写的早了点和你用的配置不太相同,但hibernate的实现是一样的。当然如果还是不太明白的话,那就问问给你教材的人吧。。

高洛峰

install方法不要写private看看,应该是private导致transactional的AOP代理没生效(private无法被继承覆盖)。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号