Невозможно удалить постоянные объекты из Google App DataStore Engine

StackOverflow https://stackoverflow.com/questions/3809366

Вопрос

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

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

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

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

Все объекты BBB удаляются, как и ожидалось, но все 20 объектов AAA остаются. Есть ли что-то, что мне не хватает?

Это было полезно?

Решение

Изоляция и последовательность
Уровень изоляции DataStore вне транзакций ближе всего к Read_Commomed.

Эти тесты проходят.

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());
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top