2013-05-12 6 views
0

Play 프레임 워크 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(). 필드 ("id") .in (itemsIds) .toString(); TransactionItem.o(). set ("paidInvoiceDocNum", String.valueOf (docNumber)). 업데이트 (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가 모듈에 대한 업데이트를 마무리했습니다. 가장 최근의 morphia 플러그인 버전을 얻으려면 이것을 사용하십시오 : https://gist.github.com/greenlaw110/2868365

+0

작동하지 않았습니다 ...이 예외가 있습니다 : com.google.code.morphia.query.ValidationException : 'in'필드를 찾을 수 없습니다. 유효성을 검사하는 동안 'models.TransactionItem'에서; 계속하려면 유효성 검사를 비활성화하십시오. – elad