2011-08-24 58 views
2

我使用Objectify和我的第一個嚴肅的Google App Engine項目,並且通常它都會游泳(多麼可愛的圖書館!)。不幸的是,我堅持我的實體時遇到了一個問題。Objectify中的嵌入式實體似乎不會自動生成Id

我的基本結構如下:

@Entity 
class Parent { 
    @Id 
    long id = 123; 
    @Embedded 
    Child[] children; 
} 

@Entity 
class Child { 
    @Id 
    Long id; 
} 

我手動聲明父實體的ID,但我想嵌入式子實體自動生成的ID。我確實想知道完全刪除子實體中的@Id並對其進行編碼,但是後來我得到了有關需要@Id的實體的錯誤。

有人可以幫忙嗎?我使用id來比較父實體的孩子之間的變化,所以這對我設計它的當前方式來說是相當重要的。不過,我可以重新設計,如果這會是一個更好的解決方案。

回答

5

http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Entity_Representation看來,它看起來不像@Embedded實體在數據存儲中實際上是分離的實體。它們只是作爲屬性直接存儲在父對象的字段中。

如果你想在兒童實體是自己的,單獨訪問的對象,你應該改變Parent持有鑰匙或一組ID,然後分別實例化Child對象。這將爲每個Child生成id(您可以將其存儲在Parent的id數組中)。

+0

好的,謝謝。這聽起來非常明智,儘管恐怕有些概念對我來說目前仍然有點太新,無法準確理解每一點。我將相應地重新設計架構,並嘗試重新閱讀該鏈接幾次;) – Martin