2015-03-03 27 views
0

端点(Java)是否需要一个持久化类才能拥有一个id字段?Java端点类是否需要主键字段?

在终结点之前,我的JDO模型本身没有id(主键)字段。数据存储具有其自己的ID字段,并在插入新记录时生成一个值。模型可以工作,我可以插入记录(数据存储成功插入并生成一个id值)。

我将它转换为Endpoints(使用Google Plugin for Eclipse),并做了些微调整。生成的代码引用了一个不在模型中的ID。所以我把参数切换到另一个唯一的标识符(电子邮件地址)。

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

但是,当我把一个id字段作为主键,现在我的插入要求在id中的值(这是不适合我的情况)。

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

回答

0

我的假设是肯定的,所有这样的持久化类需要一个id字段。我通过Objetify加上我的@IdHere是相关文件,也是关于autogenerating IDS:

  • 实体必须有一个字段@Id注解。实际的 该字段的名称是无关紧要的,可以在任何时候重新命名,即使在数据被保存后也可以重命名为 。这个值(连同'Car'种类) 成为识别实体的Key的一部分。

  • @Id字段可以是Long,longString类型。如果您使用 Long并保存具有null ID的实体,则会为您使用此类标准GAE分配程序为您生成的数值为 。如果 使用String或原始类型long,则自动生成的值不会为 。