Google App Engine数据存储区如何获取Key的实体<! - ? - >

时间:2015-08-13 14:27:51

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

我是Datastore的新手,现在我正在使用Datastore和Objectify开发Gae应用程序。实体类的格式为

@Entity
public class MyClass1 {
  public Key<MyClass2> field1;
  @Id Long id;
  and so on
 }

MyClass2的格式为

@Entity
public class MyClass2 {
  ....
  @Id public Long id;
  @Index public String field2;
  ....
}

我有MyClass1的实体。我怎样才能获得field2的值? 如果我使用DatastoreService1.get(myclass1.field1),我会得到

   method get(Key) in the DatstoreService is not applicable for arguments (Key<MyClass2>)

请帮帮我

1 个答案:

答案 0 :(得分:1)

您的错误与问题无关,因此我假设您希望获得field1的值,而不是field2

错误是因为DatastoreService get()方法需要com.google.appengine.api.datastore.Key,但您传递的是com.googlecode.objectifyKey<T>,这是一个Objectify键 - 它们不是一样。 Here are the docs

我建议您使用Ref<MyClass2>,然后执行以下操作:

MyClass2 myClass2 = myClass1.field1.get();

(使用您的代码示例)。