为什么我不能在休眠中删除两个相邻的对象?

时间:2013-03-11 21:57:26

标签: java spring hibernate

我正在使用Spring / Hibernate系统,我目前正致力于为我的项目提供图像管理。

我可以创建一个父级,上传新图像(好吧,我能够达到那个......),但是我不能删除彼此相邻的两个图像。例如,我的收藏中有八张图片。如果我选择图像1,2,3并单击删除,1& 3将删除,但2将留连。根据我的研究,这似乎是来自多个线程,并且使用hibernate docs我在代码中添加了session.flush(),但它没什么区别。

Session session = sessionFactory.getCurrentSession();
for (int i=0; i<images.size(); i++) {
    Image image = images.get(i);
    if (image.getRemove()) {
        page.getImages().remove(image);
        session.delete(image);
        session.flush();
    }
}

有谁知道如何解决这个问题?

非常感谢

1 个答案:

答案 0 :(得分:1)

这是您的图片列表:

A, B, C, D, E

您选择第一个,第二个和第三个(A,B,C),并将它们标记为“要删除”。

在第一次迭代中,i等于0,size等于5,并且您获得索引0(A)处的图像,该图像被标记为删除,因此列表变为

B, C, D, E

在第二次迭代中,i等于1,size等于4,并且您获得索引1(C)处的元素,该元素被标记为删除,因此列表变为

B, D, E

在第三次迭代中,i等于2,大小等于3,并且您获得索引2(E)处的元素,该元素未标记为删除。

结论:如果你想保持相同的算法,从列表的末尾开始,而不是从头开始。