2014-09-12 140 views
0

我想實現與GORM的悲觀鎖定哪裏查詢。悲觀鎖定在GORM哪裏查詢

喜歡的東西

def query = Person.where { 
    firstName == "Bart" 
} 
//instead of where.findAll() 
List personsLocked = where.lockAll() 

我知道,我可以做到這一點通過標準API:

List personsLocked = Person.createCriteria().list { 
    eq('firstName', 'Bart') 
    lock true 
} 

有沒有辦法通過 「其中」 查詢來實現這一目標?

回答

2

lock不在grails.gorm.DetachedCriteria(的where結果)可用,只能從通過createCriteira或通過顯式調用的情況下lock()並從而改變了LockModeLockMode.UPGRADE

你總是可以使用所提供的org.codehaus.groovy.grails.orm.hibernate.query.AbstractHibernateCriteriaBuilder傳播點運算符並在獲得結果後鎖定結果。

+0

通過在返回的實例上調用lock(),我將遇到競爭條件(在實體被讀取但尚未鎖定的瞬間)。看來,我唯一的機會是將查詢重寫爲標準樣式。 – 2014-09-15 00:22:26