为什么我不能在hibernate over&中使用相同的对象引用再次?

时间:2013-11-28 14:06:39

标签: java hibernate dao

我不明白为什么下面的代码只删除了一行。 插入元素也是如此。 任何人都可以告诉我为什么我不能使用相同的路线参考&又一次?

//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 个答案:

答案 0 :(得分:1)

您希望在更改route时关注不同的行/ id,但事实并非如此。
持久对象上的任何突变都会导致其更新资格。

您总是使用相同的route引用,尽管您通过更改其id来改变它,每次提交后都会进行更新。
实际上,Hibernate会在提交后进行优化,以避免那些无用的更新,因为您已经预先删除了。

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