0

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

我可以创建一个父级,上传新图像(好吧,当我做到这一点时,我将能够......),但我不能删除两个相邻的图像。例如,我的收藏中有八张图片。如果我选择图像 1、2、3 并单击删除,则 1 和 3 将删除,但 2 会徘徊。根据我的研究,这似乎来自多个线程,并且使用hibernate 文档我已经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();
    }
}

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

非常感谢

4

1 回答 1

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) 处的元素,该元素未标记为删除。

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

于 2013-03-11T22:17:57.860 回答