1

Я пытаюсь использовать хранилище данных App Engine (хранилище данных высокого уровня репликации, HRD), и мне нужно использовать низкоуровневый API. Я никогда не работал с базой данных сущности, поэтому у меня есть некоторые проблемы. Я пытался сохранить некоторые сообщения и комментарии, каждое сообщение может иметь больше комментариевApp Engine Datastore и низкоуровневый 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); 

ответ

0

использовать функцию автоматического инкремента вам необходимо изменить конфигурации вашего приложения использовать устаревшую keygeneration:

<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.

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