0

Spring / Hibernateシステムを使用しており、現在、プロジェクトに画像管理を提供する作業を行っています。

親を作成して新しい画像をアップロードすることはできますが(まあ、それに到達したときにできるようになります...)、隣り合った2つの画像を削除することはできません。たとえば、コレクションには8つの画像があります。画像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();
    }
}

誰かが私がこれを解決する方法を知っていますか?

どうもありがとう

4

1 に答える 1

1

画像のリストは次のとおりです。

A, B, C, D, E

1番目、2番目、3番目(A、B、C)を選択し、それらを「削除する」とマークします。

最初の反復でiは、は0にsize等しく、5に等しく、削除のマークが付けられたインデックス0(A)の画像を取得するため、リストは次のようになります。

B, C, D, E

2回目の反復でiは、は1にsize等しく、は4に等しく、削除のマークが付けられたインデックス1(C)の要素を取得するため、リストは次のようになります。

B, D, E

3回目の反復でiは、は2に等しく、サイズは3に等しく、削除のマークが付けられていないインデックス2(E)の要素を取得します。

結論:同じアルゴリズムを維持したい場合は、リストの最初から始めるのではなく、リストの最後から始めてください。

于 2013-03-11T22:17:57.860 に答える