2009-07-14 64 views
2

所以,我使用谷歌數據存儲我的GWT應用程序和我的同事想出了一個有趣的問題,我沒有答案。刪除某些對象時,該組鍵上發生了什麼?谷歌DataStore無主一對多關係

例如,

Person.java

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

    @Persistent 
    private Set<Key> favoriteFoods; 

    // ... 
} 

如果我刪除了一些從數據存儲的favoriteFood的對象會發生什麼?該對象的關鍵字是否保留在該組鍵中?我有責任從集合中刪除密鑰嗎?

回答

5

是。鑰匙會一直呆在那裏直到你將它移除。另一個問題是,你可能會不小心將一個Cat鍵粘到一個Dog列表中 - 現在鍵不是類型安全的。如果你想讓JDO實現爲你做所有的書,你現在需要使用擁有的關係。文檔here意味着這可能在未來發生變化。我對JDO不熟悉,不知道它通常如何處理無主關係。另外請注意,即使是擁有關係的「魔術」發生在JDO層中,而不是數據存儲本身,所以看起來像是一個操作可能真的是幾次對數據存儲區的實際調用(例如,級聯刪除情況)