Java 使用glassfish池休眠旧数据

Java 使用glassfish池休眠旧数据,java,database,hibernate,session,glassfish,Java,Database,Hibernate,Session,Glassfish,我在hibernate-hibernate-core-3.5.4-Final中遇到了一个问题,通过GlassFish3使用JDBC池 但当我在数据库上运行查询时,会从数据库中提取旧数据。 方法如下: String queryString = "FROM EntityObject WHERE name = :name order by startDate desc"; Query query = session.createQuery(queryString); query.setPar

我在hibernate-hibernate-core-3.5.4-Final中遇到了一个问题,通过GlassFish3使用JDBC池

但当我在数据库上运行查询时,会从数据库中提取旧数据。 方法如下:

 String queryString = "FROM EntityObject WHERE name = :name  order by startDate desc";

 Query query = session.createQuery(queryString);
 query.setParameter("name", "Smith");
 query.setMaxResults(1);
 EntityObject entityObject = (EntityObject) query.uniqueResult();
休眠配置:

 <hibernate-configuration>
    <session-factory>
        <property name="hibernate.bytecode.use_reflection_optimizer">true</property>
        <property name="current_session_context_class" >thread</property>
        <property name="hbm2ddl.auto">validate</property>
        <property name="show_sql">false</property>
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
        <property name="javax.persistence.validation.mode">none</property>
        <property name="hibernate.connection.datasource">jdbc/ClusterDatasource</property>
        <property name="hibernate.cache.use_second_level_cache">false</property>
        <property name="hibernate.cache.use_query_cache">false</property>

        <mapping ...  />
    </session-factory>
</hibernate-configuration>
我不知道这是hibernate和/或glassfish的缓存问题还是其他原因

你能帮我一下吗


谢谢

这可能是事务隔离的设置。那么,您是在同一个事务中还是在不同的事务中查询这个问题?如果在这两个查询之间保存了某些内容,请尝试检查数据库是否保存了值,如果未保存,则在保存到数据库中时执行session.flush()。删除此项,然后尝试session.setDefaultReadOnly(true);我尝试使用4隔离级别,但它不起作用。除此之外,保存是从另一个系统执行的,因此我认为这不是刷新问题。如果每次我执行查询时都打开一个会话,它会工作,但我不知道对性能的影响。您可以尝试使用无状态会话
 sessionFactory = new Configuration().configure(CONFIG_FILE).buildSessionFactory();
 session = sessionFactory.openSession();
 session.setDefaultReadOnly(true);
 session.setCacheMode(CacheMode.IGNORE);