Я надеюсь, что приведенный ниже код будет полезным.Вы можете следовать нижеприведенному подходу, чтобы проблематично удалить все сущности из вида.Сначала мы выбираем все сущности из вида и заполняем список ключей, а затем выбираем каждую сущность с помощью ключа и удаляем ее из хранилища данных.
Шаг 1: Получить все ключи из хранилища данных
List<String> googleDSKeyList = new ArrayList<String>();
StructuredQuery<Entity> query = Query.newEntityQueryBuilder().setKind(kind).build();
QueryResults<Entity> results = datastore.run(query);
results.forEachRemaining(entity -> googleDSKeyList.add(String.valueOf(entity.getKey().getNameOrId())));
Шаг 2: Для каждого объекта передать ключ методу удаления.
googleDSKeyList.forEach(keyId-> deleteEntity(keyId));
Шаг 3:Чтобы удалить объект, выполните select и затем удалите.
public void deleteEntity(String KEY_VALUE) {
Query<Entity> query = Query
.newGqlQueryBuilder(Query.ResultType.ENTITY,
"SELECT * WHERE __key__ HAS ANCESTOR KEY (" + KIND_NAME + ", '" + PRIMARY_KEY + "')")
.setAllowLiteral(true).build();
QueryResults<Entity> results = datastore.run(query);
if (results.hasNext()) {
Entity rs = results.next();
datastore.delete(rs.getKey());
LOGGER.info("Successfully Deleted KEY # : " + KEY_VALUE);
}
}