Objectify中的嵌入式实体似乎不会自动生成Id

时间:2011-08-24 06:12:27

标签: java google-app-engine objectify

我正在使用Objectify和我的第一个严肃的Google App Engine项目,而且一般都是游泳(这是一个可爱的图书馆!)。不幸的是,我在坚持我的实体时遇到了一个问题。

我的基本结构如下:

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

@Entity
class Child {
    @Id
    Long id;
}

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

有人可以帮忙吗?我正在使用id,以便比较父实体的子节点之间的变化,因此它对我设计它的当前方式来说是相当基础的。我可以重新设计,如果这是一个更好的解决方案。

1 个答案:

答案 0 :(得分:5)

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

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