mysql缓存hibernate,MySQL或Hibernate缓存问题接收旧数据

当我更新表时,我面临一个奇怪的问题,当我尝试获取时,几秒钟后我仍然收到旧数据 . 当我再次使用相同的查询获取几秒后,我会收到刷新的数据 . 基本上我所看到的是返回新数据需要一些时间 .

我已经禁用了所有来自hibernate的缓存,同时取出我正在使session.clear()和标记查询为无法访问 .

我也查看了mysql查询日志,我发现hibernate正在查询mysql,但我收到的是旧数据 .

如何确保在任何给定的时间点我只收到刷新的数据

下面是我的hibernate配置文件

org.hibernate.dialect.MySQL5InnoDBDialect

true

jdbc:mysql://127.0.0.1:4804/aluminidb?autoReconnect=true

root

root

com.mysql.jdbc.Driver

false

false

org.hibernate.cache.NoCacheProvider

下面是获取对象的代码

@Override

public Alumini login(String email, String password) {

Session session=sessionFactory.openSession();

session.clear();

Transaction t;

try{

t=session.beginTransaction();

Query query = session.getNamedQuery("chkLogIn");

query.setParameter("email",email);

query.setParameter("password",password);

query.setCacheMode(CacheMode.REFRESH);

query.setCacheable(false);

List aluminiList=query.list();

if(aluminiList!=null && aluminiList.size()>0){

System.out.println(aluminiList.get(0).getLastUpdated());

t.commit();

return aluminiList.get(0);

}else{

t.rollback();

return null;

}

}finally{

session.close();

}

}

所以我正在清理会话,同样在我的配置中我已将所有缓存设置为禁用 . 当我更新记录时,如果我使用上述方法获取记录,那么我会在几秒钟内收到旧数据一次 . 之后,它给了我最新的数据 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值