2

我在我的第一个严肃的 Google App Engine 项目中使用了 Objectify,而且通常一切都很顺利(多么可爱的图书馆!)。不幸的是,我在坚持我的实体时遇到了一个问题。

我的基本结构如下:

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

@Entity
class Child {
    @Id
    Long id;
}

我正在手动声明父实体的 id,但我希望嵌入的子实体自动生成一个 id。我确实想知道完全删除子实体中的@Id 并围绕它进行编码,但随后我收到有关需要@Id 的实体的错误。

有人可以帮忙吗?我使用 id 来比较父实体的子实体之间的变化,所以它对我目前的设计方式来说是相当基础的。不过,如果那会是更好的解决方案,我可以重新架构。

4

1 回答 1

5

http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Entity_Representation看来,@Embedded 实体实际上根本不是数据存储区中的独立实体。它们只是作为属性直接存储在父对象的字段中。

如果您希望子实体成为它们自己的、可单独访问的对象,您应该更改Parent为保存一组键或 ID,然后Child分别实例化您的对象。这将为每个 Child 生成 id(您可以将其存储在 id 数组中Parent)。

于 2011-08-24T17:04:55.927 回答