我正在使用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作为每个实体的唯一键。
答案 0 :(得分:0)
您必须将您的电子邮件地址设置为“密钥”名称:密钥由自动递增的长ID或用户指定的密钥名称定义,该名称对于实体类型是唯一的。
我使用JPA的次数最多,因为我主要使用JDO和低级方法,但您可能必须直接使用com.google.appengine.api.datastore.Key
对象而不是java.lang.String
属性。 。
低级API方法是:
KeyFactory.createKey("EntityName", "whatever@domain.com");