2010-08-18 99 views
0

我堅持使用條目從DB刪除條目。我有Hibenrnate與春天融爲一體。 RDMS是HyperSql和應用服務器是Spring和休眠:無法刪除條目

Tomcat 6.對於依賴管理我使用maven和開發我使用Eclipse和maven插件。

Hibernate is in version: 3.3.2.GA 
Spring is in version: 3.0.3.RELEASE 
HyperSql is in version: 2.0.0 

我的問題如下。首先,我使用合併存儲進入數據庫。此條目是用戶註冊的請求。輸入存儲到數據庫後,我發送電子郵件給該新用戶。此電子郵件包含確認鏈接。這用於驗證他/她輸入的註冊請求的用戶電子郵件地址。在用戶轉到鏈接後,我通過電子郵件發送,用戶被要求提供憑據,如果憑證正常,則註冊請求被確認並應從數據庫中刪除。我試圖用delete(Object)方法刪除這個條目。一切似乎都很好,直到我嘗試訪問我剛纔刪除的同一個請求。此條目實際上並未刪除,並且在日誌中我找到下一條消息:

處理臨時實體在刪除處理中。

我嘗試刷新會話並清除它,但它沒有做任何事情。

Session factory is: org.springframework.orm.hibernate3.LocalSessionFactoryBean 

任何幫助將不勝感激。

最好的問候, Tiho

回答

3

你加載你刪除同一會話對象?

您應該這樣做,因爲對象會被該會話管理。你不能將對象合併到某個地方,傳遞它,然後明白地刪除它。 事務已關閉,對象然後是暫時的(非託管)。總之,在你刪除之前,加載對象。你有這個ID,所以它不應該很難。

編輯

感動與工作回答到這個問題的評論。

+0

我使用org.springframework.orm.hibernate3.HibernateTransactionManager進行事務管理。看起來我需要在春季更多地瞭解事務管理。我會更詳細地瞭解這一點。 感謝您以正確的方式指導我的問題。 – Tiho 2010-08-18 13:41:10

+0

我標記的方法刪除此條目作爲@Transactional(propagation = REQUIRES_NEW)和應用程序行爲相同,沒有此更改。 – Tiho 2010-08-19 13:31:25

+0

@Tiho您是否在刪除的同一會話中加載對象?你應該這樣做,因爲這個對象會被該會話管理。你不能將對象合併到某個地方,傳遞它,然後明白地刪除它。交易已經結束,對象是暫時的(非託管)。總之,在你刪除之前,加載對象。你有這個ID,所以它不應該很難。 – extraneon 2010-08-20 09:18:12