0

如果在两个不同的事务中同时(之前不存在)创建具有相同键(没有父级)的实体,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 {
                    ...
                }


            }
        });

谢谢!

4

1 回答 1

0

是的,如果该实体组中的任何内容发生变化(包括实体创建和删除),您将获得 CME。

您显示的代码应该可以正常工作。除非您真的知道自己在做什么,否则最好只使用 transact() 方法,而不是尝试限制重试或强制执行新事务。99% 的时间,transact() 只是做正确的事。

于 2013-04-03T23:17:35.823 回答