使用Hibernate 4.0我有三個休眠實體:重複使用Hibernate的關鍵問題
歌,封面作品,CoverImage
歌代表的音樂文件,CoverImage代表圖像和封面作品用於涉及CoverImages歌曲,一歌曲可以包含多個封面圖片。
Song和CoverArt有一個由Hibernate自動生成的主鍵。但Cover Image主鍵手動完成,構造爲圖像數據的MessageDigest。我這樣做是因爲相同的圖像可以被許多歌曲使用,我不希望在數據庫中多次存儲同一圖像的單獨實例,這也是因爲可以從數據庫中構建密鑰,我可以在數據庫中檢查文件是否已經存在存在,如果是的話,檢索它而不是構建一個新的CoverImage。
問題是我的應用程序是多線程的,Hibernate實際上並沒有將事情直接提交給數據庫,所以線程1可能會檢查coverimage是否已經在數據庫中,發現它並沒有構建新的歌曲,CoverArt和CoverImage對象。但是,數據被提交到CoverImage可能是由一個單獨的線程加入數據庫的時間,所以我得到一個例外,因爲我的新CoverImage使用具有相同的密鑰 作爲現有
林
session.merge(coverImage);
所以我認爲會處理這個,但它似乎沒有幫助
添加更多代碼片段。 – 2012-04-16 11:40:24