Java 为什么我不能在hibernate中删除两个相邻的对象?
我使用的是Spring/Hibernate系统,目前正在为我的项目提供图像管理 我可以创建一个家长,上传新的图片,我将能够当我到达那个…,但我不能删除两个相邻的图片。例如,我的收藏中有八幅图像。如果我选择图像1、2、3并单击“删除”,则1和3将删除,但2将保留。根据我的研究,这似乎来自多个线程,并且我已经在代码中添加了session.flush,但这没有什么区别Java 为什么我不能在hibernate中删除两个相邻的对象?,java,spring,hibernate,Java,Spring,Hibernate,我使用的是Spring/Hibernate系统,目前正在为我的项目提供图像管理 我可以创建一个家长,上传新的图片,我将能够当我到达那个…,但我不能删除两个相邻的图片。例如,我的收藏中有八幅图像。如果我选择图像1、2、3并单击“删除”,则1和3将删除,但2将保留。根据我的研究,这似乎来自多个线程,并且我已经在代码中添加了session.flush,但这没有什么区别 Session session = sessionFactory.getCurrentSession(); for (int i=0;
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();
}
}
有人知道我如何解决这个问题吗
非常感谢以下是您的图片列表:
A, B, C, D, E
选择第一个、第二个和第三个A、B、C,并将它们标记为要删除
在第一次迭代中,i等于0,size等于5,得到索引0a处的图像,该图像被标记为删除,因此列表变为
B, C, D, E
B, D, E
在第二次迭代中,i等于1,size等于4,得到索引1c处的元素,该元素被标记为删除,因此列表变为
B, C, D, E
B, D, E
在第三次迭代中,i等于2,size等于3,得到索引2e处的元素,该元素未标记为删除
结论:如果要保持相同的算法,请从列表的末尾开始,而不是从开头开始。作为记录,我还尝试了session.clear和session.close,这两种方法都不起作用。session.close使事情变得更糟。