Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我不能在hibernate中删除两个相邻的对象?_Java_Spring_Hibernate - Fatal编程技术网

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

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;

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

我可以创建一个家长,上传新的图片,我将能够当我到达那个…,但我不能删除两个相邻的图片。例如,我的收藏中有八幅图像。如果我选择图像1、2、3并单击“删除”,则1和3将删除,但2将保留。根据我的研究,这似乎来自多个线程,并且我已经在代码中添加了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();
    }
}
有人知道我如何解决这个问题吗


非常感谢

以下是您的图片列表:

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使事情变得更糟。