java Objectify事务在同时创建实体时是否引发ConcurrentModeException?
Objectify是否会在两个不同事务中同时创建具有相同密钥(没有父项)的实体(之前不存在)时抛出ConcurrentModificationException?我只是找到了关于实体已经存在并被修改的情况的信息,但没有发现它还不存在的情况
ofy().transactNew(20, new VoidWork() {
@Override
public void vrun() {
Key<GameRequest> key = Key.create(GameRequest.class, numberOfPlayers + "_" + rules);
Ref<GameRequest> ref = ofy().load().key(key);
GameRequest gr = ref.get();
if(gr == null) {
// create new gamerequest and add...
// <-- HERE
} else {
...
}
}
});
谢谢
# 1 楼答案
是的,如果实体组中有任何更改,包括实体创建和删除,您将获得CME
您显示的代码应该可以正常工作。除非您真的知道自己在做什么,否则最好只使用transact()方法,而不尝试限制重试次数或强制执行新事务。99%的情况下,transact()会做正确的事情