Google говорит:
Примечание. Реализация JDO выполняет работу по удалению зависимых дочерних объектов, а не хранилища данных. Если вы удаляете родительский объект с использованием низкоуровневого API или консоли администратора, связанные дочерние объекты не будут удалены.
Итак, как я могу удалить объект, у которого есть дочерние сущности, которые являются ArrayList???
Не должно ли это быть основной особенностью - удалить зависимые дочерние сущности из родительского объекта?
Он не говорит, что JDO не выполняет каскадирование зависимых детей. Фактически, он говорит, что он действительно делает их, но это код в JDO, который делает это. Таким образом, если вы напрямую касаетесь базы данных (инструмент SQL или admin), зависимые дети не будут удалены.
Я действительно решил это, получив всех зависимых детей в отдельных запросах и удалив их. Просто удаление родительского элемента не удаляло зависимых детей из хранилища данных.
Это было выполнено с помощью функции setAncestor()
// delete all children phrases
Query phrase = new Query("Phrase");
phrase.setAncestor(parentKey);
results = datastore.prepare(phrase).asList(FetchOptions.Builder.withDefaults());
for (Entity result : results)
datastore.delete(result.getKey());