2014-03-07 51 views
0

我有一個像兩個管理員一樣的項目結構可以查看單個患者詳細信息,因此當兩個管理員同時查找同一個患者詳細信息(考慮爲健康狀況)時。我越來越喜歡行在更新或被另一個事務刪除時呈現

Row was updated or deleted by another transaction 

調試運行後的例外,在controller側是沒有問題的,但在gsp有一個service call,在當另一名管理員是同一時間延遲GSP的渲染過程中,所以自動試圖渲染相同的gsp,這個異常會上升。

注1:我無法避免gsp的服務調用。

注2:沒有保存或更新操作 - 所以像合併)解決方案(或鎖()會工作很難

我的問題:有沒有什麼辦法,使這項要求要等到渲染過程結束了?或以任何其他方式避免此異常。

代碼片段

def test = testService.getAllLogs(id, startDate, endDate) 
render(view:"test",model:[test: test]) 
+0

服務方法是否標記爲事務的READ_ONLY?這將是避免這種情況的好方法。 –

+0

這沒有幫助 –

回答

1

如果問題真的因爲一個視圖操作和沒有修改,你可能有東西進行修改和Grails試圖自動爲您保存發生。

尋找你的gsp或控制器中的域對象上的列表的排序,當沒有真正改變時會導致更新。您還可以查看數據庫並查看版本列是否在頁面視圖中更新。

現在如果真正的問題是編輯發生在多個地方,您有幾個選項。將領域模型分解爲更有限的編輯碰撞。或者確保將所有更改從服務器推回到實況頁面。

相關問題