亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為何我執行了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)還是很奇怪。

正在回答

3 回答

你這段代碼事物(transaction)沒有開,也沒有提交

0 回復 有任何疑惑可以回復我~

session.save(grade)是添加班級;

grade.getStudent().add(st); 往新班級添加學生

班級表與學生被從物理層面有關聯關系,所以學生信息跟著改變。

0 回復 有任何疑惑可以回復我~

第一個問題的答案是,我的代碼控制權默認是在多方的,對1方進行操作,不會進行關系的維護

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Hibernate初探之一對多映射
  • 參與學習       42163    人
  • 解答問題       310    個

Hibernate中一對多關聯映射配置,以及cascade和inverse屬性作用

進入課程

為何我執行了session.save(grade); 沒有更新?一定要加st.setGrade(grade); 還有為何只save了grade,卻把student也更新了

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號