Почему операции чтения в хранилище данных механизма приложений Google не видят предыдущие записи или удаления? - PullRequest
2 голосов
/ 23 декабря 2010

ObjectifyBookShelfDAO транзакцияalDao = новый ObjectifyBookShelfDAO (true);
для (Элемент элемента: элементы) {
транзакция_Do.removeThisItem (элемент);
Элемент элемента =actionalDao.againCheckThisItem (элемент);// зачем возвращать этот элемент даже // после удаления?
if (item! = null)
{
// выполнить некоторую операцию
actionalDao.savethisItem (item);
}

TransactionsalDao.ofy (). GetTxn (). Commit ();

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

1 Ответ

3 голосов
/ 26 января 2011

это нелогично, но на самом деле это ожидаемое поведение.из транзакции хранилища данных документы :

Запросы и запросы внутри транзакции гарантированно видят единый, согласованный снимок хранилища данных на начало транзакции ... Этонепротиворечивое представление снимка также распространяется на чтение после записи внутри транзакции.В отличие от большинства баз данных, запросы и запросы внутри транзакции хранилища данных не видят результатов предыдущих записей внутри этой транзакции.В частности, если объект изменен или удален в транзакции, запрос или получение возвращает исходную версию объекта на момент начала транзакции или ничего, если объект не существовал тогда.

см. статью об изоляции транзакций хранилища данных .

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