2

因此,我正在为我的 GWT 应用程序使用 google 数据存储区,而我的同事提出了一个我没有答案的有趣问题。当你删除一些对象时,这组键会发生什么?

例如,

人.java

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Person {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;

    @Persistent
    private Set<Key> favoriteFoods;

    // ...
}

如果我从数据存储中删除了一些 favoriteFood 对象,会发生什么?该对象的密钥是否保留在密钥集中?我有责任从套装中取出钥匙吗?

4

1 回答 1

5

是的。钥匙会一直留在那里,直到您将其移除。另一个问题是您可能会不小心将 Cat 键插入 Dogs 列表 - 键现在不是类型安全的。如果您希望 JDO 实现为您完成所有簿记工作,您现在需要使用拥有的关系。这里的文档暗示这在未来可能会改变。我对 JDO 不够熟悉,不知道它通常如何处理无主关系。还要注意,即使拥有关系“魔法”发生在 JDO 层,而不是数据存储本身,所以在您看来,一个操作实际上可能是对数据存储的多个实际调用(例如,级联删除情况)

于 2009-07-15T02:33:59.447 回答