如何在Objectify中进行级联删除?

时间:2016-04-13 02:50:32

标签: java google-app-engine google-cloud-endpoints objectify nosql

过去几天我一直在搜索,但找不到满足我的答案。

是的,我确实在查看此帖how-do-you-implement-cascading-delete-in-objectify以及Google Developer论坛的其他帖子。

每个人都说"它与关系数据库"不同,但是没有人为此发布实现。

这些是我的模特,

大学

public class University{

    @Id
    private Long id;

    private String title;

    List<Ref<College>> colleges = new ArrayList<>();
}

医学院

public class College{

    @Id
    private Long id;

    private String title;
}

我简化了模型,使其看起来更干净。我想同时删除大学和学院。

在此示例中,有两个级别的层次结构,但在我的项目中,我有三个级别的层次结构。找到一个实体的孩子和孙子并删除它们对我来说似乎并不高效。

2 个答案:

答案 0 :(得分:1)

每个人都说它与关系数据库不同

您没有 relationship ,因此根据定义,您无法删除“所有相关对象”。您必须逐个删除每个实体。

答案 1 :(得分:0)

你不能。

如果您的数据确实是一个未引用的层次结构,请考虑使用嵌入对象对其进行建模,因此只有一个基础文档。然后,更新或删除将在一个数据存储区实体上。

如果不是,那么当你想要删除时,必须有关于可以和不能删除的内容的逻辑,你需要自己编程