4

我正在尝试使用 Objectify v4 在 App Engine 中获取实体,但它不起作用。

  • 我的@Entity:Translation.class
  • 我要获取的@Entity 的@Id:301L

我的@Entity:

@Entity
public class Translation {
  @Id
  private Long id;
  private String text;

  public String getText() {
    return text;
  }

  public Long getId() {
    return id;
  }

  public void setText(String text) {
    this.text = text;
  }
}

不说话的请求:

Translation translation =ObjectifyService.ofy().load().type(Translation.class).id(301L).get(); // translation is null

但如果我这样做:

 Translation translation = ObjectifyService.ofy().load().type(Translation.class).first().get(); // translation is not null

然后:

System.out.println(translation.getId()); // translation id equal 301

因此,按 id 获取似乎不起作用。问题出在哪里?

4

2 回答 2

5

由于您的实体有一个@Parent字段,为了通过 id 获取它,您需要执行:

Translation translation = ObjectifyService.ofy().load().type(Thing.class).parent(par).id(301).get();

有关更多信息,请查看Objectify 基本操作 - 加载

希望这可以帮助!

于 2012-11-08T11:36:10.323 回答
0

对于@stickfigure,这是我真正的@Entity(PartOfSpeechGroup 显然也是一个@Entity)。

@Entity
public class Translation implements IsSerializable {
  @Id
  private Long id;
  private String text;
  @Parent
  private Key<PartOfSpeechGroup> partOfSpeechEntryKey;

  public Translation() {}

  public Translation(Key<PartOfSpeechGroup> partOfSpeechEntryKey) {
    this.partOfSpeechEntryKey = partOfSpeechEntryKey;
  }

  public String getText() {
    return text;
  }

  public Long getId() {
    return id;
  }

  public Key<PartOfSpeechGroup> getPartOfSpeechEntryKey() {
    return partOfSpeechEntryKey;
  }

  public void setText(String text) {
    this.text = text;
  }
}
于 2012-11-09T02:23:17.820 回答