我不明白为什么下面的代码只删除了一行。 插入元素也是如此。 任何人都可以告诉我为什么我不能使用相同的路线参考&又一次?
//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
感谢。
答案 0 :(得分:1)
您希望在更改route
时关注不同的行/ id
,但事实并非如此。
持久对象上的任何突变都会导致其更新资格。
您总是使用相同的route
引用,尽管您通过更改其id来改变它,每次提交后都会进行更新。
实际上,Hibernate会在提交后进行优化,以避免那些无用的更新,因为您已经预先删除了。
这些更新涉及同一行,解释了为什么在提交后只发生一次删除。