开发者社区> 问答> 正文

Hibernate 有关get和load的差别

    为什么这个会报错
    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");

展开
收起
小旋风柴进 2016-03-17 09:19:31 1895 0
1 条回答
写回答
取消 提交回答
  • load方法去查询的时候是在你要用到代理对象的数据的时候才去发送sql到数据库查数据,单是你在set的之前就commit了,把session关闭了,所以后面会报错,报错的类型是懒加载错误,而get的时候,是马上发起sql去查询数据放在对象中,对象已经存在了,所以你set的时候就不会报错!

    2019-07-17 19:04:26
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载