Google 数据存储 - 确保只为具有特定祖先键的实体创建一个实体
Google Datastore - Ensure only one entity is created for an entity with a specific ancestor key
我想确保只为具有特定祖先键的实体创建一个实体。我的解决方案是将祖先查询放在事务中,检查实体是否存在,如果不存在,则创建它。
这会确保只有一个实体存在一个特定的祖先键吗?
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.
}
}
}
});
SO 不喜欢一个词的答案,所以我不能只说 "Yes"。
如果您只是想确保只有一件事存在,则不需要祖先查询 - 只需对已知 ID 进行按键获取。
而且由于 Java7 消失了,没有理由不把它放在 lambda 中。
我想确保只为具有特定祖先键的实体创建一个实体。我的解决方案是将祖先查询放在事务中,检查实体是否存在,如果不存在,则创建它。
这会确保只有一个实体存在一个特定的祖先键吗?
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.
}
}
}
});
SO 不喜欢一个词的答案,所以我不能只说 "Yes"。
如果您只是想确保只有一件事存在,则不需要祖先查询 - 只需对已知 ID 进行按键获取。
而且由于 Java7 消失了,没有理由不把它放在 lambda 中。