App Engine Datastore и низкоуровневый API

Я пытаюсь использовать хранилище данных App Engine (High Replication Datastore, 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);

И этот код для комментария, но я не понимаю, как использовать предка, чтобы установить связь между постом и комментарием. Должен ли я просто добавить свойство предка и присвоить ему значение идентификатора?

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 ответ

Решение

Чтобы использовать функцию автоинкремента, вам нужно изменить конфигурацию вашего приложения, чтобы использовать устаревшую генерацию ключей:

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

тогда вы можете изменить свой код на следующее:

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

если вы не передадите идентификатор, 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.

вместо автоинкремента я бы порекомендовал вам использовать генерацию ключей по умолчанию, причем это не инкремент, но все же уникальный,
также должно быть быстрее, чем наследие

Другие вопросы по тегам