我正在使用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();
}
}
有谁知道如何解决这个问题?
非常感谢
答案 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)处的元素,该元素未标记为删除。
结论:如果你想保持相同的算法,从列表的末尾开始,而不是从头开始。