初学者
昨天弄了一天
发现现有的一对多关系 不能修改
比如 一个学生表 一个班级表 学生和班级是多对一
如果已经指定 01号学生 在01号班级  就无法用update 使01号学生改为对应02号班级
示例如下:
Student student=studentDao.get(1);
student.setClazz(2);
studentDao.update(1);那么如果 添写学生信息时 确实添错 需要修改 是不是就不能用hibernatedaosupport的 update方法?十分着急 各位大侠多多指教

解决方案 »

  1.   

    问题补充:
    Student student=studentDao.get(1);
    student.setClazz(2);
    studentDao.update(1); studentDao.update(Integer id)方法定义是 getHibernateTemplate(get(id))如果update方法不到get里去找student
    而改为studentDao.update(Student student)
    update就可以实现了 请问update方法中调get返回的对象为什么不行???????????
      

  2.   

    要修改关系持有者(inverse=false)端
    比如学生保持跟class的关系Student student=studentDao.get(1);
    拿掉class关联
    Clasz clasz = student.getClasz();
    clasz.remove(student);
    update(clasz);
    student.setClazz(clasz2);
    studentDao.update(1); 
      

  3.   

    Student student=studentDao.get(1);
    student.setClazz(2);
    这里student已经是一个持久化对象了,
    你在update(Integer id)方法里是不可以
    用一个id去加载两个持久化对象的,
    getHibernateTemplate(get(id)) 
    也就是说,你不可以用同一个id去调用两次get(id)方法,
    其实你不需要显式调用update()方法,
    持久化对象的一个特点就是,当session(与数据库的连接)结束时,
    会自动将数据库中的值与自身的值同步,
    你把update(clasz); 这段去掉就可以了