Java 谷歌数据存储无主一对多关系

Java 谷歌数据存储无主一对多关系,java,google-app-engine,gwt,google-cloud-datastore,Java,Google App Engine,Gwt,Google Cloud Datastore,所以,我正在使用谷歌数据存储来开发我的GWT应用程序,我的同事提出了一个有趣的问题,我没有答案。删除某些对象时,关键帧集会发生什么变化 比如说, Person.java @PersistenceCapable(identityType = IdentityType.APPLICATION) public class Person { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)

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

比如说,

Person.java

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

    @Persistent
    private Set<Key> favoriteFoods;

    // ...
}
@PersistenceCapable(identityType=identityType.APPLICATION)
公共阶层人士{
@主键
@持久性(valueStrategy=IdGeneratorStrategy.IDENTITY)
私人长id;
@持久的
私人食品;
// ...
}

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

是的。钥匙将留在那里,直到你取下它。另一个问题是,你可能会意外地将一把猫钥匙插入狗的列表中,因为钥匙现在不是类型安全的。如果您希望JDO实现为您完成所有簿记工作,那么现在需要使用自有关系。这些文件暗示,这可能在未来发生变化。我对JDO不够熟悉,不知道它通常如何处理无主关系。还要注意,即使拥有的关系“魔力”也发生在JDO层,而不是数据存储本身,因此在您看来,一个操作实际上可能是对数据存储的几个实际调用(例如,级联删除情况)