Google Datastore - убедитесь, что для объекта с указанным ключом предка c создан только один объект - PullRequest
0 голосов
/ 18 января 2020

Я хочу убедиться, что только одна сущность создана для сущности с указанным c ключом предка. Мое решение состоит в том, чтобы поместить запрос предка в транзакцию, проверить, существует ли сущность, и, если нет, создать ее.

Будет ли это гарантировать, что существует только одна сущность с указанным c ключом предка?

ofy().transact(new VoidWork() {
    public void vrun() {

            Entity entity = ofy().load().type(Entity.class)
                    .ancestor(ancestorKey)
                    .first()
                    .now();

            if (entity == null) {
                // Entity does not exist. Create it.
                final Entity newEntity = new Entity(ancestorKey);

                ofy().save().entity(newEntity).now();
            } else {
                // Entity already exists.
            }

        }
    }
});

1 Ответ

3 голосов
/ 18 января 2020

ТАК не нравится односложные ответы, поэтому я не могу просто сказать "Да".

Если вы просто пытаетесь гарантировать, что существует одна-единственная вещь, вам не нужно запрос предка - просто выполните get-by-key для известного идентификатора.

И поскольку Java7 больше нет, нет причин не помещать это в лямбду.

...