有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    是的,如果实体组中有任何更改,包括实体创建和删除,您将获得CME

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