Objectify:如何使用@Container注释?

时间:2017-04-17 04:51:22

标签: google-app-engine google-cloud-datastore data-modeling objectify

以下(抽象)代码给出了StackOverflow错误,我假设由于Team和Member之间的递归引用(Team包含Member,其中包含Team等)。

@Entity public class Team {
  @Id public String id;
  public List<Member> members;

  public Team() {
    this.id = UUID.randomUUID().toString();
  }
}


public class Member {
  @Container Team team; //removing this line prevents error, but then how to reference this member's team?

  public Member() {}
}

如何正确设置此关系的注释,以便团队引用其成员,并且每个成员都有对其团队的引用?

1 个答案:

答案 0 :(得分:0)

@Container使嵌入的实体填充引用的实体。如果您执行上述操作,当您加载TeamMember之一时,它会将另一个作为嵌入实体加载到其中,然后再将其加载到其中 - &gt;显然,这是一个无限递归的团队和成员一直到溢出。

假设Member只能在一个团队中。也许你最好将Team设置为@Parent(团队包含成员,成员是团队的一部分)。请记住,这意味着您可以持续每秒写入1次限制,尽管您可以在短时间内突然爆发。