此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【fengsky491】截止到2008-07-11 10:01:24的历史汇总数据(不包括此帖):
发帖的总数量:46                       发帖的总分数:990                      每贴平均分数:21                       
回帖的总数量:60                       得分贴总数量:4                        回帖的得分率:6%                       
结贴的总数量:43                       结贴的总分数:820                      
无满意结贴数:10                       无满意结贴分:180                      
未结的帖子数:3                        未结的总分数:170                      
结贴的百分比:93.48 %               结分的百分比:82.83 %                  
无满意结贴率:23.26 %               无满意结分率:21.95 %                  
值得尊敬

解决方案 »

  1.   

    [code:1] 
    老师实体 
    <set 
    name="teacher" 
    lazy="false" 
    inverse="true" 
    cascade="all" 
    sort="unsorted" 
    > <key 
    column="teacherId" 

    </key> <one-to-many 
    class="hemis.dao.model.hibernate.StudentCourse" 
    /> 
    </set> 
    [/code:1] 
    [code:1] 
    学生实体 
    <many-to-one 
    name="student" 
    class="hemis.dao.model.hibernate.Student" 
    cascade="none" 
    outer-join="auto" 
    update="true" 
    insert="true" 
    access="property" 
    column="studentid" 
    />[/code:1] 
    把原文的学生和选课实体,改为了老师和学生实体
      

  2.   

    我现在遇到的问题,就象上述一样。
    采用的解决方法是先把旧的数据(多的一方的数据)删掉,在把新的插入。难道只能用这种方法吗?Hibernate没用更好的方案吗?
      

  3.   

    在teacher的hbm的配置文件中cascade设置成all-delete-orphan
    <set name="studentSet"  cascade="all-delete-orphan" ......>
    <one-to-many  class="xxx.Student" />
    </set>之后再你的dao里面
    DAO dao= (DAO) BeanFactory.getBean("dao"); 
    Teacher teacher = dao.getTeacherById(teacherId); 
    Object[] studentSet = teacher.getStudentSet().toArray(); Set newStudentSet = new HashSet(); 
    //将新学生加入newStudentSet中 
    teacher.setStudentSet(newStudentSet); 
    dao.update(teacher); 
      

  4.   


    我也是这么改的,上面的例子很我的很相似,所以把他的代码copy过来了,
    按照你的方法我早试过了,还是不行,
    这样只能加入新的,旧的去不掉
      

  5.   

    这样似乎不行,看了下面的帖子
    http://hi.baidu.com/ekou/blog/item/aa89e80e8df9ece436d122b4.html
    楼主修改成这样
    1 在实体中把setStudentSet方法设置成私有private
    2 在实体中增加如下方法
    public void addStudentSet(Student s) {
        getStudentSet().add(s);
        s.setPerson(this);
    }3 设置cascade="all-delete-orphan"4 在dao中
    DAO dao= (DAO) BeanFactory.getBean("dao"); 
    Teacher teacher = dao.getTeacherById(teacherId); 
    teacher.getStudentSet().clear();//将新学生加入newStudentSet中 
    teacher.addStudentSet(student1); 
    teacher.addStudentSet(student2);
    teacher.addStudentSet(student3);
    dao.update(teacher); 
      

  6.   

    谢谢Landor2004:是我的配置出错了。
    经测试
    1 在实体中把setStudentSet方法设置成私有private 
    不用设为private ,public也行。非常感谢!