比如
School school = schoolService.getSchool(id);
school.getStudent().setName("newname");
schoolService.save(school);这样的话Student会自动更新(没有设置级联),难道hibernate在对持久态的属性修改后会自动保存(知道是flush的操作吧),
就是对实体属性也会更新?

解决方案 »

  1.   

    schoolService里面估计没开启事物吧 Session session = HibernateSessionFactory.getSession();
    Transaction  tx = session.beginTransaction();
                    session.save(school);
                    tx.commit();
      

  2.   

    这说明你的事务有问题啊。service的方法返回时,session应该处于关闭状态才对啊。
    你的居然还开着? 莫非你手动控制事务吗?如果你有特殊需求必须让事务一直开着的话,在查找到Student 以后把它从一级缓存中删掉也可以解决你的问题。既:
    session.evit(student);
      

  3.   

    我用了OpenSessionInView啊,一个请求都是共用一个Session的。