解决方案 »

  1.   

    有没有可能:第二个线程执行的时候,第一个线程执行的插入操作还没有提交事务,所以你重启tomcat,就能查出来了。
      

  2.   

    第一个线程加flag,执行完后commit,把flag=true,第二个线程先判断flag==true再查询
      

  3.   

    昨晚弄到很晚,刚看见各位的回复.
    事物没提交之前,我查询表的时候是空的,应该是没提交,否则就有数据了.
    多个线程共享一个flag吗?如何实现?Action 前面是组装参数,
    this.userFacade.saveUser(User user);
    在spring配置中配置的point-cut表达式是 execution(* com.test.server.facade.*.save*(..))
    Facade层
            this.basicMsgService.upgradeBasicMsg(); // 锁表,basicMsg中在数据库中永远只存在一条记录
            List<UserVO> persistentUsers = this.userService.findAll(); // 查询user表,如果有数据跑出异常
            if (persistentUsers != null && persistentUsers .size() > 0)
            {
                throw new MyException("user data is exits.");
            }
    代码结构差不多是这样的,实际代码比较多,看起来也比较乱.
      

  4.   

    这么测试的原因是觉得浏览器同一时间可能会发出多个请求
    纯js控制觉得不太保险
    所以在后台也想加个验证
    但是觉得好难啊
    给我的感觉就是用hibernate查询的时候会从缓存当中读取
    因为我的断点是加在Facade层的第一个行
    不知道,纯粹个人理解