繁体   English   中英

事务隔离READ UNCOMMITTED不起作用

[英]Transaction Isolation READ UNCOMMITTED is not working

我正在使用休眠模式进行数据库连接。 现在,我需要读取未提交的事务隔离,但它对我不起作用。 请任何人帮助我是什么原因,我使用了以下代码:

@org.springframework.transaction.annotation.Transactional( 
isolation =Isolation.READ_UNCOMMITTED)
 public addRank(){
//here i want to change status of rank corresponding rank id 1 so i called private mthoed addChangeStatus with id 1 
 addChangeStatus(1);
  //here i want to get rank with id and status true but i got null 
} 

private addChangeStatus( int rankId ){
  // first get rank entity from database using given id 
  Rank rank = dao.getRankById("query");
  //set status of rank true here
  rank.status(true);
}

在dao getRankById方法中

Query getRankById(String query){
  //get currentSession from session factory 
   getCurrentSession().getNamedQuery(queryName);
}

谁能告诉我什么是读不写的原因不起作用。 在xml文件中,我也将事务管理器配置为

<bean id="transactionManager"
    class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean> 

谁能帮我在同一笔交易中如何获取更新等级实体。

您无法通过同一事务测试READ_UNCOMMITTED

您尝试在那里进行的测试无法正常工作,但原因有所不同。 如果您尝试使用EntityManager#find()进行检索,则会从第一级高速缓存取回结果,该高速缓存存储了您尚未持久的更改,而没有DB往返。 1级缓存无法通过查询工作。

所以:

  1. 如果要存储和读取同一事务,则不需要READ_UNCOMMITTED 只需将您的检索更改为EntityManger#find()Session#load()即可从一级缓存中进行检索
  2. 如果确实需要READ_UNCOMMITTED修改涉及多个事务的测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM