2
當我試圖給定的圖像添加到相同的目的地城市的兩倍,我得到以下異常:防止NonUniqueObjectException休眠
NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [org.wah.model.ImageEntity#7]
這是好事,因爲我不想重複。我試圖防止這種情況的發生代碼:
public void addImageToDestination(int idDestination, String imageFileName){
Destination destination = (Destination) getEntity(idDestination);
ImageEntityDAO imageDao = new ImageEntityDAO();
ImageEntity image = imageDao.getImage(imageFileName);
if(image == null)
image = new ImageEntity(imageFileName);
else if(destination.getImages().contains(image)){
return;
}
session.beginTransaction();
destination.getImages().add(image);
session.getTransaction().commit();
}
的else-if結構試圖確定它是否已經存在,則無能爲力,回到原樣。但是,else-if條件從不計算爲TRUE並且會話代碼運行,產生NonUniqueObjectException。
我該如何防止這種情況發生?
謝謝!我也明白爲什麼它失敗了,因爲它是在做對象的參考檢查,否則。我們希望通過價值檢查。另外,在實現equals和hashCode之後,我使用google guava和apache通用語言。學習現在使用哪一個。 – brainydexter 2012-02-11 18:40:53