2013-11-28 38 views
1

我不明白爲什麼只有一行被下面的代碼刪除。 插入元素的情況也是如此。 有誰能告訴我爲什麼我不能再使用&以上的相同路徑參考?爲什麼我不能在hibernate中重複使用同一個對象引用?

//Begin transaction 
     Long id=1; 
     Route route = new Route(); 
     RouteDAO routeDAO = new RouteDAOImpl(); 
     route.setRouteId(id); 
     routeDAO.delete(route); 
     route.setRouteId(++id); 
     System.out.println(route.getRouteId()); 
     routeDAO.delete(route); 
     route.setRouteId(++id); 
     routeDAO.delete(route); 
     route.setRouteId(++id); 
     routeDAO.delete(route); 
//Commit Transaction 

謝謝。

+1

因此,基本上無論您在同一對象上打開的事務中做了哪些更改,只有最新的一個正在提交給數據庫。 因此,您需要爲每個記錄刪除創建新的對象。 –

回答

1

當您更改id但您不希望在不同的行/ route重點,但它不是。
持久對象上的任何突變都會導致其更新資格。

儘管您通過更改ID來更改它,但每次提交後都會導致更新,但始終使用相同的route引用。
實際上,Hibernate在提交後進行優化,以避免那些無用的更新,因爲您已經精簡了刪除操作。

這些更新涉及同一行,解釋提交後爲什麼只發生一次刪除。

相關問題