OptimisticLockException在Play 2 Framework中删除EBean时

时间:2015-04-10 12:37:44

标签: java orm playframework playframework-2.0 ebean

我正在尝试从其他对象的列表中删除对象。但是我遇到了一个奇怪的异常。我尝试过多种方法,但这是我最后的测试:

public static Result unpair(String tokenString)
    {
        Token token = Token.getToken(tokenString);
        if(token == null) return ok(toJson(Error.AUTH_ERROR));

        String epc = form(UnpairRequest.class).bindFromRequest().get().epc;

        //Here the line throwing an Exception
        CommitItem.find().where()
                    .eq("commit.user", token.user)
                    .eq("epc",epc)
                    .findUnique().delete();

        return ok(toJson(Response.OK));
    }

它引发了这个例外:

OptimisticLockException: Data has changed. updated [0] rows sql[delete from commit_item where epc=? and evat_price=? and ivat_price=? and vat=? and product_product_code=? and commit_id=?] bind[null]

似乎在Select语句之后没有释放Lock但我不知道为什么......

我也尝试以这种方式删除我的对象:

PairingCommit commit = PairingCommit.find().where()
          .eq("user", token.user).findUnique();
CommitItem item = CommitItem.find().where()
          .eq("commit", commit)
          .eq("epc", epc);
commit.items.remove(item);
commit.update();

但它不会从数据库中删除我的项目。 我真的不明白我的代码出了什么问题。

0 个答案:

没有答案