2013-03-11 129 views
0

我正在使用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

爲了記錄,我也嘗試了session.clear()和session.close(),這兩者都沒有什麼不同(session.close打破了更多的東西)。 – Toby 2013-03-11 21:58:28

回答

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是equa 1到2,大小等於3,並且您得到索引2(E)處的元素,該元素未標記爲刪除。

結論:如果您想保持相同的算法,請從列表的末尾開始,而不是從頭開始。