我正在使用Play framework 1.2.5和Play-Morphia模块。 我想知道是否有办法在一个Morphia查询中更新许多对象。我在https://github.com/greenlaw110/play-morphia/blob/master/documentation/manual/crud.textile找到了这个例子,但似乎我不能在norder中使用“in”操作来查找我在ID列表中保存的所有对象。
我正在尝试更新其ID在列表“itemsIds”中的每个对象中的paidInvoiceDocNum字段。这是我到目前为止所尝试的: String q = TransactionItem.find()。field(“id”)。in(itemsIds).toString(); TransactionItem.o()。set(“paidInvoiceDocNum”,String.valueOf(docNumber))。update(q);
没有.toString()它也不起作用。 有什么建议吗?
答案 0 :(得分: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);
希望它会有所帮助......
答案 1 :(得分:0)
你能试试吗?
TransactionItem.o().set("paidInvoiceDocNum", docNumber).update("id in", itemsIds);
顺便说一下,你的吗啡版本是什么?请记住Play已关闭模块的更新。使用它来获取最新的morphia插件版本:https://gist.github.com/greenlaw110/2868365