使用应用引擎时设置自己的实体键

时间:2013-06-02 10:09:36

标签: android google-app-engine jpa

我正在使用eclipse创建基于应用程序引擎的应用程序,我还使用端点来使用app引擎数据存储(使用JPA)。 我在帮助下写了一个测试应用程序 https://developers.google.com/eclipse/docs/endpoints-addentities  它很好。

现在我想创建一个实体,我在其中定义自己的Key,而不是由系统自动分配。有人可以帮助我在Notes.java实体类中需要做什么。默认情况下,Notes.java就是这样。

package com.bfp.mypackage;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
    public class Note {

      @Id
      private String id;
                  private String emailAddress;
      private String description;
              public Note() {
      }

      public String getId() {
      return id;
      }

      public String getDescription() {
        return description;
      }

      public String getEmailAddress() {
        return emailAddress;
      }

      public void setId(String idIn) {
        this.id = idIn;
      }


      public void setDescription(String description) {
        this.description = description;
      }

      public void setEmailAddress(String emailAddress) {
      this.emailAddress = emailAddress;
      }

             }

当我测试这段代码时,我看到在我的开发应用服务器管理控制台中创建的Note实体,其中包含我提供的值(emailAddress,dsescription和ID(我在那里传递时间戳))。我在管理控制台中查看实体时看到了另外两个字段。一个“密钥”和其他“写操作”。现在我理解的“Key”字段是java自动生成的字段。无论如何我可以将我的emailAddress字段设置为密钥吗?如果是这样,那么我需要在上面的代码中做些什么改变。这样我就可以使用emailAddress作为每个实体的唯一键。

1 个答案:

答案 0 :(得分:0)

您必须将您的电子邮件地址设置为“密钥”名称:密钥由自动递增的长ID或用户指定的密钥名称定义,该名称对于实体类型是唯一的。

我使用JPA的次数最多,因为我主要使用JDO和低级方法,但您可能必须直接使用com.google.appengine.api.datastore.Key对象而不是java.lang.String属性。 。 低级API方法是: KeyFactory.createKey("EntityName", "whatever@domain.com");