2017-10-13 104 views
1

我對Grails或GORM並不熟悉(這是我們幾乎沒有碰過的傳統項目)。GORM UpdateAll引用屬性

我的問題:我需要更新匹配查詢的所有對象,更新本質上需要引用該對象的另一個屬性,並從一個屬性複製到不同的屬性。另一個挑戰是搜索和更新必須以原子方式完成以避免問題。作爲一個db,我們使用的是mongodb(如果這改變了什麼)。

//Example: account has three properties: A, B and C 
DetachedCriteria<Account> query = Account.where { 
    A: "something" 
} 
query.updateAll(
    B: C //how to reference C here? 
) 

如何在updateAll中引用C?如果這甚至可能? 我沒有鎖定使用DetachedCriteria。無論什麼解決方案最適合。 在此先感謝

回答

0

最快的解決辦法是使用「低級別」蒙戈查詢:

Account.collection.updateMany([ A:'something' ], [ $set:[ A:'something else', B:42 ] ]) 

你必須雖然檢查,你有你的蒙戈插件的版本updateMany方法/蒙戈驅動程序。你可能最終有:

Account.collection.update([ A:'something' ], [ $set:[ A:'something else', B:42 ] ], [ multi:1 ]) 
+0

這並不完全是關鍵,但因爲我只需要$重命名屬性無論如何(不復制),它的工作。謝謝 – Kroney