0

我正在使用 Play framework 1.2.5 和 Play-Morphia 模块。我想知道是否有一种方法可以在一个 Morphia 查询中更新许多对象。我在https://github.com/greenlaw110/play-morphia/blob/master/documentation/manual/crud.textile找到了这个例子,但似乎我不能使用“in”操作来查找我在其 ID 列表中保存的所有对象。

我正在尝试更新其 ID 在列表“itemsIds”中的每个对象中提交的paidInvoiceDocNum。这是我迄今为止尝试过的: String q = TransactionItem.find().field("id").in(itemsIds).toString(); TransactionItem.o().set("paidInvoiceDocNum", String.valueOf(docNumber)).update(q);

没有 .toString() 它也不起作用。有什么建议么?

4

2 回答 2

0

经过长时间对 Play-Morphia 的试验,我找到了进行此更新的方法,它是:

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);

希望它会有所帮助...

于 2013-05-12T13:58:33.257 回答
0

你能试试这个吗?

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

顺便说一句,你的吗啡版本是什么。请记住,Play 已关闭对模块的更新。使用它来获取最新的 morphia 插件版本:https ://gist.github.com/greenlaw110/2868365

于 2013-05-12T20:59:23.760 回答