Как удалить строку из Google Datastore с помощью Java? - PullRequest
0 голосов
/ 18 февраля 2011

Я хочу удалить запись строки из хранилища данных Google.

Я закодировал:

            String[] elements = deletedRow.split(",");
            DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
            Entity row = new Entity("Row");
            Key rowKey;
            for (String element : elements) {
                row.setProperty("userName", "kapil.kaisare");
                out.print("UserName : " + element);
                row.setProperty("description", element);
                rowKey = row.getKey();
                out.print("\nKey : " + rowKey);
                datastore.delete(rowKey);
            }

deleRow - это параметр запроса, полученный из вызова AJAX javaScript, и он точно не пустой.

Имя пользователя напечатано успешно. Пока ключ печатает:

Ключ: Ключ 0

Это меня удивляет! Почему там ключ 0, даже если я устанавливаю свойства строки!

Пожалуйста, предложите какое-нибудь решение.

Для справки: Запросы и индексы , Объекты, свойства и ключи

Ответы [ 2 ]

1 голос
/ 18 февраля 2011

Попробуйте следующее

String[] elements = deletedRow.split(",");
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();

for (String element : elements) {
    Key key = KeyFactory.createKey("Row", element);
    datastore.delete(key);
}

Я предполагаю, что Row - это тип объекта, а элемент (то есть имя пользователя?) - это имя ключа.

0 голосов
/ 18 февраля 2011

Согласно документации getKey():

Если объект еще не был сохранен (например, через DatastoreService.put), этот ключ не будет указан полностью и не сможетиспользоваться для определенных операций (например, DatastoreService.get).После сохранения сущности ее ключ будет обновлен до полного указания.

Таким образом, вы не должны пытаться использовать ключ для сущностей, которые никогда не сохранялись в хранилище данных, если только вы неуказал полный ключ в конструкторе сущности.

...