谷歌DataStore无主的一对多关系

时间:2009-07-14 20:45:24

标签: java google-app-engine gwt google-cloud-datastore

所以,我正在使用谷歌数据存储区为我的GWT应用程序和我的同事提出一个有趣的问题,我没有答案。删除某些对象时,该组键会发生什么变化?

例如,

Person.java

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

    @Persistent
    private Set<Key> favoriteFoods;

    // ...
}

如果从数据存储区删除一些favoriteFood对象会怎样?该对象的密钥是否保留在密钥集中?我有责任从集合中删除密钥吗?

1 个答案:

答案 0 :(得分:5)

烨。钥匙将留在那里,直到你删除它。另一个问题是,你可能会意外地将Cat键粘贴到Dogs列表中 - Keys现在不是类型安全的。如果您希望JDO实现为您完成所有的簿记,您现在需要使用自己的关系。文档here暗示这可能在将来发生变化。我对JDO不太熟悉,知道它通常如何处理无关的关系。还要注意,即使拥有的关系“魔法”发生在JDO层,而不是数据存储本身,所以你可能认为一个操作可能真的是对数据存储区的几个实际调用(例如,级联删除情况)< / p>