2013-05-12 25 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