我有一個(供應商)和許多(客戶)。我正在用三個新的客戶對象更新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();
添加回答
舉報
0/150
提交
取消