Java hibernate查询结果在更改后不更新
我对hibernate有问题。查询结果未更新 我有一个简单的查询,它检查customertable以查看“enabled”列是否为true。查询工作正常。但是当我将列值从'true'更改为'false'并运行相同的查询时。。。结果还是给了我“真实”的感觉 如果我关闭应用程序并重新编译,然后再次运行查询,它将显示false,但如果我将其更改回true,它将再次显示。。它仍然显示“假”结果。我做错了什么Java hibernate查询结果在更改后不更新,java,mysql,hibernate,Java,Mysql,Hibernate,我对hibernate有问题。查询结果未更新 我有一个简单的查询,它检查customertable以查看“enabled”列是否为true。查询工作正常。但是当我将列值从'true'更改为'false'并运行相同的查询时。。。结果还是给了我“真实”的感觉 如果我关闭应用程序并重新编译,然后再次运行查询,它将显示false,但如果我将其更改回true,它将再次显示。。它仍然显示“假”结果。我做错了什么 public void isEnabled(String customer){ Sess
public void isEnabled(String customer){
Session session = sessionFactory.openSession();
Transaction tx = null;
try{
tx=session.beginTransaction();
Query query = session.createQuery("FROM Customer WHERE enabled=true");
List qr = query.list();
boolean check = qr.iterator().hasNext();
boolean enabled;
sw = new ServerWriter(writer);
if(check){
for(Iterator itr = qr.iterator();itr.hasNext();)
{
Customer c =(Customer)itr.next();
enabled=c.geEnabled();
sw.sendMessage("Customer is enabled");
}
}else{
sw.sendMessage("Customer is not enabled");
}
} catch(HibernateException e){
if(tx!=null){tx.rollback();}
e.printStackTrace();
}finally{session.close();}
}
首先,您忘记关闭交易:
session.getTransaction().commit();
第二次查询时获得相同值的原因是Hibernate缓存。你总是有一个一级缓存,如果你配置了它,你也可以有一个二级缓存
在执行查询之前,可以使用以下命令刷新一级缓存:
session.refresh()
如果您碰巧有第二级缓存,则可以使用以下提示跳过它:
query.setHint("org.hibernate.cacheMode", CacheMode.IGNORE);
我做错了什么?
不要向我们提供有效的代码来说明您的问题。。您提交了事务吗?eh正在编辑以添加代码!您必须在代码中提交事务tx.commit()