Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用app engine时设置自己的实体密钥_Android_Google App Engine_Jpa - Fatal编程技术网

Android 使用app engine时设置自己的实体密钥

Android 使用app engine时设置自己的实体密钥,android,google-app-engine,jpa,Android,Google App Engine,Jpa,我正在使用eclipse创建一个基于应用程序引擎的应用程序,在这个应用程序中,我还使用端点使用应用程序引擎数据存储(使用JPA)。 我在他的帮助下编写了一个测试应用程序 一切顺利 现在,我想创建一个实体,在其中定义自己的密钥,而不是由系统自动分配密钥。有人能帮我在Notes.java实体类中做些什么吗。默认情况下,Notes.java文件如下所示 package com.bfp.mypackage; import javax.persistence.Entity; import javax.pe

我正在使用eclipse创建一个基于应用程序引擎的应用程序,在这个应用程序中,我还使用端点使用应用程序引擎数据存储(使用JPA)。 我在他的帮助下编写了一个测试应用程序 一切顺利

现在,我想创建一个实体,在其中定义自己的密钥,而不是由系统自动分配密钥。有人能帮我在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;
      }

             }

当我测试这段代码时,我看到在我的dev app server管理控制台中创建的Note实体带有我提供的值(emailAddress、dsdescription和ID(我在那里传递时间戳))。在管理控制台中查看实体时,我看到另外两个字段被创建。一个“键”和另一个“写操作”。现在我理解的“Key”字段是由java自动生成的。我是否可以将emailAddress字段设置为密钥?如果是这样的话,那么我需要在上面的代码中做什么更改。这样我就可以使用emailAddress作为每个实体的唯一密钥

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

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