在我的Hibernate应用程序中,我有时间表(父)classtable(child)是他们的。
我的第一个操作是插入时间表并使用此时间表插入许多classtable。喜欢onetomany Relation。
但是我正面临着这个问题:插入第一个时间表并插入了classtable,并再次提供时间表和classtable ..........等等......
但我的目的只是一个时间表,而且许多是可以说的。
在时间表中听到我的代码
@OneToMany(mappedBy = "timetable",cascade={CascadeType.ALL})
private Set<ClassTableVO> classtable;
和ClassTable
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name = "COURSE_TABLE_ID")
private TimetableVO timetable;
如果我们移除(cascade={CascadeType.ALL})
,则会提供object references an unsaved transient instance
等异常
请帮帮我..
Edit:
在我的Hibernate中,我使用的是JPA EntityManager类
userDAO.createEvent(timetableVO);//this loop only one time executed
------
-----
for(---){
userDAO.createClassTable(classTable);
}
以上方法在两种方法中都有两行代码。
entityManager.merge(classTable);//
entityManager.flush();
答案 0 :(得分:0)
执行TimeTableVO.addClassTable(ClassTableVO ct)
时,请记得设置ClassTableVO.timetable
:
public void TimeTableVO.addClassTable(ClassTableVO ct){
if(classtable.add(ct)){
ct.setTimetable(this);
}
}
所以链接是正确设置的,Hibernate知道如何在保存时正确级联对象