2013-05-12 55 views
0

我使用Play框架1.2.5和Play-Morphia模塊。 我想知道是否有辦法在一個Morphia查詢中更新許多對象。我在https://github.com/greenlaw110/play-morphia/blob/master/documentation/manual/crud.textile找到了這個例子,但似乎我不能在norder中使用「in」操作來查找我在其ID列表中保存的所有對象。play-morphia中的批量更新

我正在嘗試更新每個對象的paidInvoiceDocNum字段,這些對象的ID在列表「itemsIds」中。這是我到目前爲止所嘗試的: String q = TransactionItem.find().field(「id」)。in(itemsIds).toString(); TransactionItem.o()。set(「paidInvoiceDocNum」,String.valueOf(docNumber))。update(q);

沒有.toString()它也不起作用。 有什麼建議嗎?

回答

0

後與播放嗎啡試驗的時間長了,我發現這樣做更新的方式,那就是:

Datastore ds = TransactionItem.ds(); 
UpdateOperations<TransactionItem> op = ds.createUpdateOperations(TransactionItem.class).set("paidInvoiceDocNum", String.valueOf(docNumber)); 
Query<TransactionItem> q = (Query<TransactionItem>)TransactionItem.q().filter("id in", itemsIds).getMorphiaQuery(); 
ds.update(q, op); 

希望這將有助於...

0

你可以嘗試這個?

TransactionItem.o().set("paidInvoiceDocNum", docNumber).update("id in", itemsIds); 

順便說一句,你的嗎啡版本是什麼。請記住,Play已關閉模塊的更新。使用它來獲取最新的嗎啡插件版本:https://gist.github.com/greenlaw110/2868365

+0

它沒有工作......我有這個異常:com.google.code.morphia.query.ValidationException:無法找到'in'字段在'models.TransactionItem'同時驗證 - in;如果你想繼續,請禁用驗證。 – elad 2013-05-19 05:12:38