有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么我不能在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) 个答案

  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,size等于3,得到索引2(E)处的元素,该元素未标记为删除

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