端点(Java)是否要求可持久化类具有id字段?
在端点之前,我的JDO模型本身没有id(主键)字段。数据存储区有自己的id字段,并在插入新记录时生成一个值。该模型有效,我可以插入记录(数据存储成功插入并生成id值)。
我将其转换为端点(使用Google Plugin for Eclipse),并稍作调整。生成的代码引用了不在模型中的id。所以我将参数切换到另一个唯一标识符(电子邮件地址)。
它编译和部署。但是当我运行API资源管理器时,我无法插入。我得到“班级[班级名称]不可持久。”
但是当我将一个id字段作为主键时,现在我的插入符要求id中的值(这对我的情况来说并不理想)。
端点是否要求类具有id(唯一标识符)?如果是这样,有没有办法让appengine / datastore为我生成它?谢谢!
答案 0 :(得分:0)
我的假设是肯定的,所有这些可持久的类都需要一个id字段。我通过Objetify添加@Id
。 Here是相关文档,也是关于自动生成ID的文档:
实体必须有一个用
@Id
注释的字段。实际上 该字段的名称无关紧要,甚至可以随时重命名 数据持久化后。这个值(以及'Car'的种类) 成为标识实体的Key的一部分。
@Id
字段可以是Long
,long
或String
类型。如果你使用Long
并保存一个null
id的实体,数值就是 使用此类标准GAE分配器为您生成的。如果 您使用String
或原始long
类型,值永远不会 自动生成的。