2012-04-13 1 views
0

DatastoreService.delete (Key ... keys)를 사용하여 엔터티 키에서 일괄 삭제 작업을 수행합니다. 각 엔터티는 루트 엔터티이므로 트랜잭션없이 트랜잭션이 실행됩니다. 배치 크기가 하드 코드되고 삭제가 단계적으로 수행됩니다. 각각의 다음 동작은 먼저 이전에 실행 된 get 질의에서받은 커서를 사용하여 엔티티 키를 가져 오기 위해 key-only get query를 실행 한 다음 배치 삭제 질의를 수행합니다. 스키마가 잘 작동하는 것 같다, 하지만 쿼리가 삭제되는 동안 예외가 발생하면 어떻게됩니까?DatastoreService 일괄 삭제. 예외가 발생하면 어떤 일이 발생합니까?

성공적으로 삭제 된 항목을 얻는 방법이 있습니까? 아니면 엔티티가 삭제되지 않았습니까? 그리고 저레벨에서 GAE에서이 작업이 어떻게 수행되는지 명확히 해줄 수 있습니까?

답변

0

예외가 발생하면 엔티티의 일부 정의되지 않은 하위 집합이 삭제됩니다. 현재 삭제 된 목록을 가져올 방법이 없습니다.

가장 좋은 방법은 단순히 전체 일괄 삭제 작업을 다시 시도하는 것입니다.

+0

답변 해 주셔서 감사합니다. 유일한 질문은 왼쪽 : 재시도 시도를 할 때 커서 (query.startCursor)를 사용해야합니까? 아니면 커서를 생략해야합니까? – Peter

+0

@ 피터 사실, 나는 이미 가지고있는 키 목록으로 삭제를 다시 시도해야한다는 것을 의미했다. –

관련 문제