在外部更改数据库后,hibernate查询结果相同

时间:2016-06-20 11:50:31

标签: hibernate caching java-ee

我在使用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)中查询结果

1 个答案:

答案 0 :(得分:0)

首先,如果对象已经在会话中,Hibernate将为您提供已经加载的实例。哪个可能比较旧。

也许试试session.refresh(obj)

另一个问题可能是您的交易的隔离级别。 在此处阅读有关事务隔离级别的信息:https://en.wikipedia.org/wiki/Isolation_(database_systems)#Isolation_levels

例如,如果您有SERIALIZABLE,那么您将只看到开始阅读交易时的数据。