我在同一个service实现类 里用三个方法methodA()调用methodB()methodB()调用methodC()我在methodA()里插入一条记录到tableA然后在methodC()里读取tableA里的数据
结果把methodA()里刚插入的一条也读取了methodA并没有提交请问为什么数据库mysql,spring拦截到service层,那些属性都是默认的谢谢

解决方案 »

  1.   

    “我在methodA()里插入一条记录到tableA,然后在methodC()里读取tableA里的数据”,这里是怎么理解的呢,如果这里执行了的话,而且你的hibernate的事务管理机制已经交给spring来管理的话,那么数据就已经插入到数据库了。因为spring对事务的管理是声明式的。-------个人理解,如果不正确还请多包涵。呵呵
      

  2.   

    在MySQL中,数据库表分文三种类型:INNODB、BDB和MyISAM类型。其中前两种支持数据库事务,而后一种不支持事务。在MySQl中用create table语句新建的表默认为MyISAM类型。如果希望创建INNODB类型的表,可以采用以下形式的DDL语句:       CREATE TABLE ACCOUNTS(…..) type= INNODB;对于已经存在的表,更改:       Alter table ACCOUNTS type= INNODB;
      

  3.   

    我说错了,隔离级别设置没用,因为隔离级别是相对其它事务的。
    如果你想不读刚修改的数据就要在这之前提交事务,或者插入数据之前你先查出来保存起来备用。
    而且你说的问题和SPRING没有关系。
    个人看法