App Engine数据存储区和低级API

时间:2013-06-27 12:45:37

标签: java google-app-engine google-cloud-datastore low-level-api

我正在尝试使用App Engine数据存储区(高复制数据存储区,HRD),我必须使用低级API。我以前从未使用过实体数据库,所以我遇到了一些问题。我试图存储一些帖子和评论,每个帖子都可以有更多评论

I tried this code for Post, but the problem is how to make ID auto-increment ?
Entity post = new Entity("post", ID);
post.setProperty("content", postContent);
post.setProperty("time", timeStamps);

此代码用于评论,但我不明白如何使用祖先来建立帖子和评论之间的关系,我应该只添加祖先属性并将ID值放在上面吗?

Entity comment = new Entity("comment", ID);
comment.setProperty("ancestor",postID);
comment.setProperty("content", commentContent);
comment.setProperty("time", timeStamps);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
datastore.put(comment);

1 个答案:

答案 0 :(得分:0)

要使用自动增量功能,您需要更改应用的配置以使用旧版密钥生成:

<auto-id-policy>
 legacy
</auto-id-policy>

然后您可以将代码更改为以下内容:

Entity post = new Entity("post");
post.setProperty("content", postContent);
post.setProperty("time", timeStamps);

如果您没有传递ID,则appengine将生成它

要使用祖先路径,您可以将代码更改为以下内容:

datastore.put(post);    
Entity comment = new Entity("comment", post.getKey());
comment.setProperty("content", commentContent);
comment.setProperty("time", timeStamps);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
datastore.put(comment);

祖先密钥将作为构造函数arg。

而不是自动增量我建议你使用默认密钥生成,不是增量但仍然是唯一的,
它也应该更快,然后传统