为什么这个会报错
Session s = sessionFactory.getCurrentSession();
s.beginTransaction();
User u = (User)s.load(User.class, 1);
s.getTransaction().commit();
u.setName("a");
而为什么这个可以
Session s = sessionFactory.getCurrentSession();
s.beginTransaction();
User u = (User)s.get(User.class, 1);
s.getTransaction().commit();
u.setName("a");
load方法去查询的时候是在你要用到代理对象的数据的时候才去发送sql到数据库查数据,单是你在set的之前就commit了,把session关闭了,所以后面会报错,报错的类型是懒加载错误,而get的时候,是马上发起sql去查询数据放在对象中,对象已经存在了,所以你set的时候就不会报错!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。