我有一个(供应商)和许多(客户)。我正在用三个新的客户对象更新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
提交
取消