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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我應該如何在現有父級上的一對多基于注釋的映射中執行更新操作?

我應該如何在現有父級上的一對多基于注釋的映射中執行更新操作?

慕俠2389804 2023-05-10 17:11:25
我有一個(供應商)和許多(客戶)。我正在用三個新的客戶對象更新vid=101數據庫中的父對象。問題在于,在數據庫中,這vid=101與新創建的子對象相關聯,但對于舊的兩個客戶對象,它變為空。這個問題只會出現在基于注解的代碼中。使用xml基于映射它的工作。Session session = factory.openSession();        Vendor v = (Vendor)session.get(Vendor.class, 100);    Customer c1 = new Customer();    c1.setCustomerId(502);    c1.setCustomerName("Rajveer");    Customer c2 = new Customer();    c2.setCustomerId(503);    c2.setCustomerName("Abhishek");    Set s = new HashSet();    s.add(c1);    s.add(c2);    s=v.getChildren();    v.setChildren(s);    Transaction tx = session.beginTransaction();    s=v.getChildren();    session.saveOrUpdate(v);    tx.commit();    session.close();
查看完整描述

1 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

1)在一個事務中執行所有操作。


2)為每個孩子設置父母。


3)添加到獲取的子列表中。您正在覆蓋現有的


Session session = factory.openSession();

Transaction tx = session.beginTransaction();


Vendor v = (Vendor)session.get(Vendor.class, 100);


Customer c1 = new Customer();

c1.setCustomerId(502);

c1.setCustomerName("Rajveer");

c1.setParent(v);


Customer c2 = new Customer();

c2.setCustomerId(503);

c2.setCustomerName("Abhishek");

c2.setParent(v);


Set s = new HashSet();

s.add(c1);

s.add(c2);


v.addChildren(s); // Add, not Set, unless you want to delete existing ones


session.saveOrUpdate(v);

tx.commit();

session.close();


查看完整回答
反對 回復 2023-05-10
  • 1 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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