爲StaleObjectStateSession
,你可以編寫
e1 = session1.load(key);
e2 = session2.load(key);
e2.modifyAnything();
e2.update();
e2.commit();
e1.modifyAnything();
e1.update();
JUnit測試情況,那麼你得到你的例外。順便說一句,StaleObjectStateSession
是一個Hibernate異常,而不是數據庫異常。
爲了測試真實的數據庫異常,您可以違反數據庫約束,例如,編寫一個JUnit案例,其中您插入的行的主鍵已存在,或者在聲明爲NOT NULL的列中具有空值在數據庫上。
如果你想一次測試,你希望避免的努力寫一個JUnit測試案例,那麼你可以與Eclipse調試和SQL操作做到這一點:
您設定的負載之間的斷點在代碼中提交記錄。當達到斷點後,在SQL中,您可以用DELETE FROM table WHERE primary_key =...
手動刪除此記錄,並在繼續執行之前提交此修改。 (或者你可以在UPDATE
這一行,但是不要忘記更新版本列。)然後在Eclipse中繼續執行程序。
另一個想法是臨時使空列與ALTER TABLE table MODIFY(column ... NOT NULL)
不爲空。在測試之後,您必須撤消此修改。當然,這種測試只能在專用測試數據庫上進行,而不能在生產系統上進行。