我不明白为什么下面的代码只删除一行。
插入元素也会发生同样的情况。
谁能告诉我为什么我不能一遍又一遍地使用相同的路线参考?

//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在提交后进行了优化,以避免那些无用的更新,因为您已精确删除了。

这些更新涉及同一行,解释了为什么在提交后仅发生一次删除。

10-08 13:23