2016-06-12 4 views
1

1.- Создать идентификатор объектаНе удалось создать новый объект в приложение-двигатель: повторный первичный ключ (идентификатор: тип длинный)

// Allocate a key for the conference -- let App Engine allocate the ID 
final Key<Conference> conferenceKey = factory().allocateId(profileKey, Conference.class); 
// Get the Conference Id from the Key 
final long conferenceId = conferenceKey.getId(); 

2.- Создать objeto, добавить идентификатор

// Create Conference 
Conference conference = new Conference(conferenceId,userId,conferenceForm); 

3.- Сохранить объект:

// Save Conference and Profile Entities 
ofy().save().entities(profile,conference).now(); 
ofy().save().entity(conference).now(); 

4.- Ошибка, кратные раз, используя тот же идентификатор (Datastore Google)

datastore google platform

Примечание: Те же объекты, созданные с таким же (режим выпуска) ANDROID_CLIENT_ID

+2

То, что вы видите, является правильным, поскольку два объекта с ID = 1 имеют разные Родители, поэтому у них разные ключи. Это полный ключевой путь, который уникален - имя/идентификатор уникально только в пределах его родительской области. – tx802

+0

@ tx802 - Пожалуйста, опубликуйте этот комментарий как ответ. Это верно. –

ответ

3

То, что вы видите, это правильно. На скриншоте показаны 2 объекта с ID = 1, но с разными родителями (пути предков).

Ключ Datastore формируется из его полного пути предка, и это уникальный ключ, а не идентификатор/имя. Идентификатор/имя уникален только в пределах его родителя. Если у объекта нет предка, то вы ожидаете, что идентификатор будет уникальным.

This page дает хороший обзор ключей.