【问题标题】:setting own Key in Entity while using app engine使用应用引擎时在实体中设置自己的密钥
【发布时间】:2013-06-02 10:09:36
【问题描述】:

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

现在我想创建一个实体,在其中定义我自己的密钥,而不是由系统自动分配。有人可以帮助我了解在我的 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 实体具有我提供的值(一个电子邮件地址、一个 dsescription 和一个 ID(我在那里传递时间戳))。当我在管理控制台中查看实体时,我看到创建了另外两个字段。一个“Key”和其他“Write ops”。现在,据我所知,“Key”字段是由 java 自动生成的。无论如何我可以将我的 emailAddress 字段设置为 Key 吗?如果是这样,那么我需要在上面的代码中做些什么改变。这样我就可以使用 emailAddress 作为每个实体的唯一键。

【问题讨论】:

    标签: android google-app-engine jpa


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 1970-01-01
      • 2017-04-19
      • 2014-08-24
      • 2011-07-30
      • 1970-01-01
      相关资源
      最近更新 更多