Java hibernate查询结果在更改后不更新

Java hibernate查询结果在更改后不更新,java,mysql,hibernate,Java,Mysql,Hibernate,我对hibernate有问题。查询结果未更新 我有一个简单的查询,它检查customertable以查看“enabled”列是否为true。查询工作正常。但是当我将列值从'true'更改为'false'并运行相同的查询时。。。结果还是给了我“真实”的感觉 如果我关闭应用程序并重新编译,然后再次运行查询,它将显示false,但如果我将其更改回true,它将再次显示。。它仍然显示“假”结果。我做错了什么 public void isEnabled(String customer){ Sess

我对hibernate有问题。查询结果未更新

我有一个简单的查询,它检查customertable以查看“enabled”列是否为true。查询工作正常。但是当我将列值从'true'更改为'false'并运行相同的查询时。。。结果还是给了我“真实”的感觉

如果我关闭应用程序并重新编译,然后再次运行查询,它将显示false,但如果我将其更改回true,它将再次显示。。它仍然显示“假”结果。我做错了什么

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()