请教大伙个问题,我现在有两个项目,用的都是ssh框架,事务是用spring管理。
在其中一个项目中select loginname from users where loginname ='test' for update 后,然后处理,在未处理完且事务未结束的时候,另外一个项目同样调用这个sql,然后修改记录成功了,请问我是不是哪里配置出问题了,还是说mysql中使用select for update的必须针对InnoDb,并且是在一个事务中,才能起作用?谢谢

解决方案 »

  1.   

    AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

    SessionFactory sessionFactory=(SessionFactory)ctx.getBean("sessionFactory");
    Session session = sessionFactory.openSession();
    Transaction transaction=session.beginTransaction();
    transaction.begin();
    Users users=(Users)session.get(Users.class, "test01");
    System.out.println(users.getCredit());
    users.setCredit(users.getCredit()+100.00);
    session.update(users);
    System.out.println(users.getCredit());
    transaction.commit();我在这句话设置了断点System.out.println(users.getCredit());,然后运行另外一个程序,但是另外一个程序仍然可以更新数据,这是为啥
      

  2.   

    Users users=(Users)session.get(Users.class, "test01",LockMode.UPGRADE);
    是这句