2011-10-31 61 views
0

後,一些實體應根據自己的價值觀有一個簽名屬性。例如,創建實體和填充它的屬性之後,當entity.saveorupdate()方法被調用,休眠事件偵聽器應該採取的控制和採集的下一序列值從分貝UNIQUEID。那麼相同的事件應該根據實體屬性和這個uniqueid來產生一個簽名(讓我們說一個字符串)。在簽名之後,應該調用真正的saveorupdate事件。所以填充符號屬性的實體被寫入數據庫。使用Hibernate聽衆在我的項目saveorupdate

問題是,在saveorupdate事件,我做了一些工作,並呼籲saveorupdate,出現這樣連續作業。

你有關於此類問題的任何解決方案? (而不是使用面向方面的編程)

回答

0

快速和骯髒的解決方案是爲具有ThreadLocal保持該實體。如果threadlocal爲空 - 更新簽名,設置threadlocal並保存實體。在下一次調用時,threadlocal將被填充,您可以從偵聽器返回。

您可以做的另一件事是在實際saveOrUpdate之前應用偵聽器,如果沒有ID,則跳過。而手動調用邏輯,當您創建實體(每個後續更新將被聽者處理)