Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为特定查询禁用Hibernate二级缓存读取或更新_Hibernate_Redis_Second Level Cache - Fatal编程技术网

为特定查询禁用Hibernate二级缓存读取或更新

为特定查询禁用Hibernate二级缓存读取或更新,hibernate,redis,second-level-cache,Hibernate,Redis,Second Level Cache,我有Redis作为Hibernate的二级缓存。我根据实体的ID启用了缓存。但是,我需要根据其他属性(如名称、年龄等)运行的查询很少。。。在这种情况下,我当前的实现仍然会命中缓存,丢失缓存,如果有任何更改,就会更新实体。因为它是基于ID进行缓存的,所以它缺少ID。如果没有ID请求缓存,我想忽略它。该怎么做 如果您需要任何其他信息,请告诉我。您可以使用Session.setCacheMode(CacheMode)进行设置 这将忽略从数据库读取数据的二级缓存 您可以使用Session.setCach

我有Redis作为Hibernate的二级缓存。我根据实体的ID启用了缓存。但是,我需要根据其他属性(如名称、年龄等)运行的查询很少。。。在这种情况下,我当前的实现仍然会命中缓存,丢失缓存,如果有任何更改,就会更新实体。因为它是基于ID进行缓存的,所以它缺少ID。如果没有ID请求缓存,我想忽略它。该怎么做

如果您需要任何其他信息,请告诉我。

您可以使用
Session.setCacheMode(CacheMode)
进行设置

这将忽略从数据库读取数据的二级缓存

您可以使用
Session.setCacheMode(CacheMode)
进行设置


这将忽略从数据库读取数据的二级缓存

有两种类型的二级缓存:

  • 缓存实体(按id或缓存自然id->id映射)和集合
  • 查询缓存

  • 似乎您一直在考虑在执行
    session.load(MyEntity.class,id)
    时发生的第一个问题。当您执行另一种类型的查询时(例如,
    SELECT*FROM MyEntity WHERE age>18
    ),您可以使用查询缓存,通过设置
    hibernate.cache.use\u query\u cache=true
    并使用提示标记查询以通过查询字符串缓存结果来启用。

    有两种类型的二级缓存:

  • 缓存实体(按id或缓存自然id->id映射)和集合
  • 查询缓存
  • 似乎您一直在考虑在执行
    session.load(MyEntity.class,id)
    时发生的第一个问题。当您执行另一种类型的查询(例如,
    SELECT*FROM MyEntity WHERE age>18
    )时,您可以使用查询缓存,通过设置
    hibernate.cache.use\query\u cache=true
    并使用提示
    org.hibernate.cacheable
    标记查询,通过查询字符串缓存结果