此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【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 %
值得尊敬
楼主【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 %
值得尊敬
老师实体
<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]
把原文的学生和选课实体,改为了老师和学生实体
采用的解决方法是先把旧的数据(多的一方的数据)删掉,在把新的插入。难道只能用这种方法吗?Hibernate没用更好的方案吗?
<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);
我也是这么改的,上面的例子很我的很相似,所以把他的代码copy过来了,
按照你的方法我早试过了,还是不行,
这样只能加入新的,旧的去不掉
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);
经测试
1 在实体中把setStudentSet方法设置成私有private
不用设为private ,public也行。非常感谢!