首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隔离级别在spring boot中不起作用

隔离级别在spring boot中不起作用
EN

Stack Overflow用户
提问于 2017-09-01 02:58:41
回答 1查看 1.2K关注 0票数 1

最近我开始使用隔离级别,但是在@Transactional注释中指定隔离级别在spring boot中似乎不起作用。我尝试了很多不同的东西,但我不能让它工作,下面是我的代码。

代码语言:javascript
复制
@Transactional(isolation=Isolation.READ_UNCOMMITTED)
 public  void updateWalletAddresses(List<RegisterWallet>      walletMetaCollection) throws Exception{
    Transaction tx =null;
    Session session =null;
    if(sessionFactory == null){
        return;
    }   
    session = sessionFactory.openSession();     
    try{
       String sql = "select * from user";   

       SQLQuery query = session.createSQLQuery(sql);
       query.addEntity(User.class);
       List<User> userlist=query.list();
       int i=0;
       while(i<userlist.size()){
        System.out.println(userlist.get(i).getEmail());
        i++;
    }

    }catch(Exception e){

        throw e;
    }
}

在执行上面的walletservice方法之前,我在mysql客户端中启动了一个事务,但我没有提交它,所以我有脏数据。在那之后,我执行了上面的代码,但是即使我指定了transaction read uncommitted,它也没有打印未提交的数据。在mysql中启动事务的代码是

代码语言:javascript
复制
set autocommit=0;
start transaction;
insert into user (name,email,password,roleid,username) 
values("prashank","myemail@gmail.com","password",1,"prashank");

注意:由于我没有提交事务,所以上面的insert会导致脏读问题。我无法读取未提交的数据注意:同样,任何其他隔离级别都不起作用。请帮帮忙

EN

回答 1

Stack Overflow用户

发布于 2020-02-10 03:15:44

使用以下命令仔细检查DB引擎

代码语言:javascript
复制
SHOW TABLE STATUS LIKE 'table_name';

如果为MyISAM,则不支持事务,请使用下面创建支持事务的InnoDB,那么您的案例应该可以工作

代码语言:javascript
复制
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL55Dialect

我也不认为

代码语言:javascript
复制
set autocommit=0;

bcz start transaction将自动禁用它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45988362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档