为什么这个会报错
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");
Hibernate 有关get和load的差别
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
just-go 2015-03-19 13:46关注load方法去查询的时候是在你要用到代理对象的数据的时候才去发送sql到数据库查数据,单是你在set的之前就commit了,把session关闭了,所以后面会报错,报错的类型是懒加载错误,而get的时候,是马上发起sql去查询数据放在对象中,对象已经存在了,所以你set的时候就不会报错!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报