2013-11-22 53 views
3

我跟着Grails的documenation它說,做悲觀鎖,我可以這樣做:悲觀鎖定:鎖定數據庫實體的Grails

def plan = Plan.findWhere(user:user, [lock: true]) 

,直到保存上it.Now在完成這個鎖定計劃實例我來說,我想一次鎖定多個計劃,像這樣:

def plan = Plan.findAllWhere(user:user, [lock: true]) 

我Grails的服務,這是通過默認的事務這樣做,但上面的線是不工作的expected.It不鎖定所有如果併發事務處理完成,則行和拋出stale state exception ormed。

如何在閱讀時鎖定多行?

請參閱相關的問題的詳細信息:concurrent transaction in grails resulting in database stale state exception

回答

-1

你可以做這樣的事情,這對我的作品:

Process.withNewTransaction { 
    def process = Process.get(job.process.id) 
    process.lock() 
    process.sessionId = 0 
    process.processId = 0 
    process.save(flush:true)  
} 
+0

這對你的作品,因爲你只有這樣得到一行' Process.get(job.process.id)'。請參閱鏈接問題,詳細說明爲什麼我不能使用像你這樣的解決方案。謝謝 – vishesh