我在使用hibernate查询项目列表时出现问题,逻辑上如果没有其他用户或外部应用程序更改了DB内容,它应该返回相同的结果 - 但是即使在更改了DB内容之后它也会返回相同的结果没有任何意义,我搜索了很多关于这个问题,其中一些人说这个问题与缓存有关,所以我使用hibernate.cfg.xml禁用了二级缓存,并将会话中的缓存模式设置为IGONRE - 毕竟没有任何改变。
<property name="hibernate.cache.use_second_level_cache">false</property>
session.setCacheMode(CacheMode.IGNORE);
我在EJB模块(StatelessSessionBean)中使用hibernate - 并在表示层(Web模块 - JSF)中查询结果
答案 0 :(得分:0)
首先,如果对象已经在会话中,Hibernate将为您提供已经加载的实例。哪个可能比较旧。
也许试试session.refresh(obj)
另一个问题可能是您的交易的隔离级别。 在此处阅读有关事务隔离级别的信息:https://en.wikipedia.org/wiki/Isolation_(database_systems)#Isolation_levels
例如,如果您有SERIALIZABLE,那么您将只看到开始阅读交易时的数据。