為何我執行了session.save(grade); 沒有更新?一定要加st.setGrade(grade); 還有為何只save了grade,卻把student也更新了
第一個問題:
GradeEntity?grade?=?new?GradeEntity("班級1","實驗班"); StudentEntity?st?=?session.get(StudentEntity.class,1); grade.getStudent().add(st);?? st.setGrade(grade);?????//一定要有這行,沒有的話,就是只有insert session.save(grade);
Hibernate:?select?max(gid)?from?grade Hibernate:?insert?into?grade?(gdesc,?gname,?gid)?values?(?,??,??)
第二個問題,即使我加了,這里也是只執行了session.save(grade);,為什么學生的信息也更新了
這里還沒到級聯呢,不應該是只save grade么
雖然我知道肯定是內部實現的,從打印的數據庫語句可以看出來:
Hibernate:?select?max(gid)?from?grade Hibernate:?insert?into?grade?(gdesc,?gname,?gid)?values?(?,??,??) Hibernate:?update?student?set?gid=?,?sex=?,?sname=??where?sid=?
最后是更新操作,但是光看這個session.save(grade)還是很奇怪。
2017-07-27
你這段代碼事物(transaction)沒有開,也沒有提交
2017-06-15
session.save(grade)是添加班級;
grade.getStudent().add(st); 往新班級添加學生
班級表與學生被從物理層面有關聯關系,所以學生信息跟著改變。
2017-06-08
第一個問題的答案是,我的代碼控制權默認是在多方的,對1方進行操作,不會進行關系的維護