Невозможно удалить постоянные объекты из Google App DataStore Engine
-
25-09-2019 - |
Вопрос
У меня есть 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());
Не связан с StackOverflow