Java Endpoints类是否需要主键字段?

时间:2015-03-03 07:16:42

标签: java google-app-engine google-cloud-endpoints

端点(Java)是否要求可持久化类具有id字段?

在端点之前,我的JDO模型本身没有id(主键)字段。数据存储区有自己的id字段,并在插入新记录时生成一个值。该模型有效,我可以插入记录(数据存储成功插入并生成id值)。

我将其转换为端点(使用Google Plugin for Eclipse),并稍作调整。生成的代码引用了不在模型中的id。所以我将参数切换到另一个唯一标识符(电子邮件地址)。

它编译和部署。但是当我运行API资源管理器时,我无法插入。我得到“班级[班级名称]不可持久。”

但是当我将一个id字段作为主键时,现在我的插入符要求id中的值(这对我的情况来说并不理想)。

端点是否要求类具有id(唯一标识符)?如果是这样,有没有办法让appengine / datastore为我生成它?谢谢!

1 个答案:

答案 0 :(得分:0)

我的假设是肯定的,所有这些可持久的类都需要一个id字段。我通过Objetify添加@IdHere是相关文档,也是关于自动生成ID的文档:

  
      
  • 实体必须有一个用@Id注释的字段。实际上   该字段的名称无关紧要,甚至可以随时重命名   数据持久化后。这个值(以及'Car'的种类)   成为标识实体的Key的一部分。

  •   
  • @Id字段可以是LonglongString类型。如果你使用   Long并保存一个null id的实体,数值就是   使用此类标准GAE分配器为您生成的。如果   您使用String或原始long类型,值永远不会   自动生成的。

  •