【问题标题】:Hibernate disable Query Cache休眠禁用查询缓存
【发布时间】:2011-03-07 19:37:58
【问题描述】:

以下问题:

我创建一个查询来显示 MYSQL 表的所有条目,如果我编辑一个字段并再次执行查询,我会得到与第一个查询相同的(旧)结果。

Hibernate 似乎缓存了结果。我试图用

禁用缓存

query.setCachable(false)

“hibernate.cache.use_second_level_cache”

“cache.provider_class”

“org.hibernate.cacheable”

刷新和关闭会话

但没有任何效果

【问题讨论】:

  • 我不明白你尝试了什么(像你一样抛出一堆选项很不清楚)。另外,我想看看查询。
  • 这是一个关于 Servlet/JSP 页面的查询 query = session.createQuery("from MyTable"); query.setCacheable(false); List bar = query.list();在第一次调用时,我得到表的条目,然后我手动编辑一些字段,如果我再次调用该函数(例如通过刷新/重新加载),我得到与以前相同的结果
  • 更改后是否保存对象?是否涉及交易?
  • 好的,我忘记提交事务了

标签: java mysql hibernate caching


【解决方案1】:

我认为你想要的配置是

hibernate.cache.use_query_cache = false

Reference.

【讨论】:

  • 这意味着查询缓存根本不是你的问题
【解决方案2】:

可能是您从未将更改的条目保存或更新为休眠状态吗?当缓存返回错误的结果时,通常表明存在其他问题。

【讨论】:

  • 我手动更改了表格中的字段,我也提交了它
  • 你能用代码更新你的问题,或者至少是与编辑和更新条目有关的片段吗?
【解决方案3】:

它与 2nd 或 Query 缓存无关,默认情况下已禁用!在您的情况下可能会有所帮助的是调用session.refresh(yourEntity),以便休眠重新读取您的实体状态。

【讨论】:

    猜你喜欢
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2011-12-30
    • 2013-01-18
    • 1970-01-01
    • 2019-04-02
    相关资源
    最近更新 更多