我不明白为什么下面的代码只删除一行。
插入元素也会发生同样的情况。
谁能告诉我为什么我不能一遍又一遍地使用相同的路线参考?
//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
谢谢。
最佳答案
您期望在更改route
时,焦点位于不同的行/ id
,但不是。
持久对象上的任何突变都会导致其资格更新。
您始终使用相同的route
引用,尽管您是通过更改其ID对其进行突变的,从而导致每次提交后都会进行更新。
实际上,Hibernate在提交后进行了优化,以避免那些无用的更新,因为您已精确删除了。
这些更新涉及同一行,解释了为什么在提交后仅发生一次删除。