有时候我们在使用事务保存一个循环中的对象时,可能会出现在提交事务后发现只保存到了最后一个对象,代码如下:
session = sf.openSession();
transaction = session.beginTransaction();
session.save(projectInfo);
ProjectProduct projectPro = new ProjectProduct();
for (int i = 0; list != null && i < list.size(); i++) {
........
session.save(projectPro);
}
transaction.commit();
session.close();
在上面代码中,每一次循环都填充一个projectPro,使得在事务提交的时候,save的就是最后一个projectPro,前面的都已经不存在了,就没有保存到,解决方法是把ProjectProduct projectPro = new ProjectProduct()放到循环里面
session = sf.openSession();
transaction = session.beginTransaction();
session.save(projectInfo);
ProjectProduct projectPro = new ProjectProduct();
for (int i = 0; list != null && i < list.size(); i++) {
........
session.save(projectPro);
}
transaction.commit();
session.close();
在上面代码中,每一次循环都填充一个projectPro,使得在事务提交的时候,save的就是最后一个projectPro,前面的都已经不存在了,就没有保存到,解决方法是把ProjectProduct projectPro = new ProjectProduct()放到循环里面