Невозможно удалить постоянные объекты из хранилища данных Google App Engine - PullRequest
0 голосов
/ 28 сентября 2010

У меня есть 2 класса AAA и BBB, где BBB содержит поле типа AAA.

Когда я вызываю makePersistent() для 10 объектов AAA и 10 BBB, хранилище данныхзаканчивается 20 объектами AAA и 10 объектами BBB.Я понимаю, что это нормально, поскольку хранилище данных GAE нереляционное.

Однако, когда я пытаюсь deletePersistentAll, используя следующее,

pm.newQuery(BBB.class).deletePersistentAll();
pm.newQuery(AAA.class).deletePersistentAll();

Все объекты BBB удаляются, как и ожидалось, новсе 20 объектов ААА остаются.Я что-то упускаю?

1 Ответ

0 голосов
/ 08 января 2011

Изоляция и консистенция
Уровень изоляции хранилища данных вне транзакций наиболее близок к READ_COMMITTED.

Эти тесты пройдены.

PersistenceManager pm = pmfInstance.getPersistenceManager();

// make 10 AAA objects
for (int i = 0; i < 10; i++) {
    pm.makePersistent(new AAA());
}

// make 10 BBB objects
for (int i = 0; i < 10; i++) {
    pm.makePersistent(new BBB(new AAA()));
}

// make sure we have 20 AAA's
@SuppressWarnings("unchecked")
List<AAA> aaa = (List<AAA>) pm.newQuery(AAA.class).execute();

assertEquals(20, aaa.size());

// make sure we have 10 BBB's
List<BBB> bbb = (List<BBB>) pm.newQuery(BBB.class).execute();

assertEquals(10, bbb.size());

// try to delete
pm.newQuery(BBB.class).deletePersistentAll();
bbb = (List<BBB>) pm.newQuery(BBB.class).execute();
assertEquals(0, bbb.size());

pm.newQuery(AAA.class).deletePersistentAll();
aaa = (List<AAA>) pm.newQuery(AAA.class).execute();
assertEquals(0, aaa.size());
assertEquals(0, bbb.size());
...