spring, hibernate, transacation, async

存在问题的代码如下:

    @Transactional(rollbackFor = Throwable.class)
    public void methodA() {
        A a = new A(1,"new");
        save(A);
        new Thread(()-> {
           A a = getA();
           a.setName("update");
           save(A);
            });
        }
       public A getA() {
           get A by hibernate;
           return A;
        }
}

问题:

  1. getA()获取到的对象A可能为空。因为事务需要等整个方法执行结束后提交。而getA()是异步执行,所有可能save(A)还没提交的情况下,getA()已经执行结束。所以在异步a.setName("update");时存在空指针异常(NPE)。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容