1. 程式人生 > >迴圈儲存在事務中為何只儲存到最後一個物件

迴圈儲存在事務中為何只儲存到最後一個物件

有時候我們在使用事務儲存一個迴圈中的物件時,可能會出現在提交事務後發現只儲存到了最後一個物件,程式碼如下:                     
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()放到迴圈裡面