我正在使用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,以便比较父实体的子节点之间的变化,因此它对我设计它的当前方式来说是相当基础的。我可以重新设计,如果这是一个更好的解决方案。
答案 0 :(得分:5)
从http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Entity_Representation开始,看起来@Embedded实体根本不是数据存储区中的单独实体。它们只是作为属性直接存储在父对象的字段中。
如果您希望子实体成为他们自己的,可单独访问的对象,则应更改Parent
以保存一组键或ID,然后分别实例化Child
个对象。这将为每个Child生成id(您可以将其存储在Parent
中的id数组中)。