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");

load方法去查询的时候是在你要用到代理对象的数据的时候才去发送sql到数据库查数据,单是你在set的之前就commit了,把session关闭了,所以后面会报错,报错的类型是懒加载错误,而get的时候,是马上发起sql去查询数据放在对象中,对象已经存在了,所以你set的时候就不会报错!

把错误信息贴出来,还有你先确定数据库中是否有id为1的数据行。