Google数据存储-确保仅为具有特定祖先键的实体创建一个实体

问题描述 投票:0回答:1

我想确保仅为具有特定祖先键的实体创建一个实体。我的解决方案是将祖先查询放入事务中,检查实体是否存在,如果不存在,则创建它。

这将确保只有一个具有特定祖先键的实体存在吗?

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

        }
    }
});
google-app-engine google-cloud-datastore objectify
1个回答
0
投票

SO不喜欢一个字的答案,所以我不能只说“是”。

[如果您只是想确保只有一件事存在,则不需要祖先查询-只需对已知ID进行密钥获取即可。

而且由于Java7不见了,所以没有理由不将其放在lambda中。

© www.soinside.com 2019 - 2024. All rights reserved.