Я бил головой об этом в течение неловкого времени и ценю любую помощь. У меня есть то, что я считаю простым сценарием, где я пытаюсь получить и обновить сущность, если она существует, или создать новое, если это не так. Существует родительская сущность, и эта часть работает нормально. Я создаю ключ ребенка, как это:Datastore не нашел запись по ключевому слову
Key someKey = KeyFactory.createKey(parent.getKey(), CHILD_KIND, child.getUniqueStringValue());
Согласно документам я прочитал делая прибудете на это будет возвращать объект, если он существует:
Entity someChild = datastore.get(someKey);
Но это не так. Вместо этого я должен выполнить:
Query query = new Query(CHILD_KIND, someKey);
Entity someChild = datastore.prepare(query).asSingleEntity();
, чтобы найти его. Если я попытаюсь записать значение someKey.toString(), они будут выглядеть одинаково во время создания, как это происходит во время поиска, но он все же находит их только в том случае, если я делаю запрос вместо get. Мне не хватает чего-то глупого и очевидного, и поиск застал меня никуда в течение недели, поэтому я ценю любую помощь.
Спасибо, Майк
Edit:
Чтобы уточнить, как я создаю дочерний объект, это так:
Key someKey = KeyFactory.createKey(parent.getKey(), CHILD_KIND, child.getUniqueStringValue());
Entity someChild = new Entity(CHILD_KIND, someKey);
someChild.setProperty("desc", child.getUniqueStringValue());
someChild.setProperty("createTime", child.getCreateTime());
// and then a few more values that are timestamps or null
Как создать свой дочерний объект? –
Привет, Андрей, я редактировал сообщение, чтобы включить, как я создаю ребенка. Благодарю. –