我正在尝试使用Objectify v4在App Engine中获取实体,但它不起作用。
我的@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 获取似乎不起作用。 问题在哪里?
答案 0 :(得分:5)
由于您的实体有一个@Parent
字段,为了通过ID获取它,您需要执行:
Translation translation = ObjectifyService.ofy().load().type(Thing.class).parent(par).id(301).get();
有关详细信息,请查看Objectify Basic Operations - Loading
希望这有帮助!
答案 1 :(得分: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;
}
}