【问题标题】:hibernate query result the same after altering db externally外部更改数据库后休眠查询结果相同
【发布时间】:2016-10-21 16:00:59
【问题描述】:

我在使用 hibernate 查询项目列表时遇到问题,从逻辑上讲,如果没有其他用户或外部应用程序更改了数据库内容,它应该返回相同的结果 - 但是即使在更改了它的数据库内容之后它也会返回相同的结果没有任何意义,我搜索了很多关于这个问题的内容,其中一些人说这个问题与缓存有关,所以我使用 hibernate.cfg.xml 禁用了二级缓存并将会话中的缓存模式设置为 IGONRE -毕竟这一切都没有改变。

<property name="hibernate.cache.use_second_level_cache">false</property>

session.setCacheMode(CacheMode.IGNORE);

我在 EJB 模块 (StatelessSessionBean) 中使用休眠 - 并在表示层 (Web 模块 - JSF) 中查询结果

【问题讨论】:

    标签: hibernate caching jakarta-ee


    【解决方案1】:

    首先,如果对象已经在会话中,Hibernate 会给你已经加载的实例。哪个可能更旧。

    不妨试试session.refresh(obj)

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

    例如,如果您有 SERIALIZABLE,那么您只会看到开始读取 Transaction 时的数据。

    【讨论】:

      猜你喜欢
      • 2010-10-27
      • 1970-01-01
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      相关资源
      最近更新 更多