【问题标题】:How to add QueryHints on Default Spring Data JPA Methods?如何在默认 Spring Data JPA 方法上添加 QueryHints?
【发布时间】:2012-03-11 09:28:14
【问题描述】:

我可以将查询缓存与 Spring Data JPA 一起用于我的自定义查询方法,如下所示。

public interface CountryRepository extends JpaRepository<Country, String> {
@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value ="true") })
Country findByCountryName(String countryName);
@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value ="true") })
Country findByCountryCode(String countryCode); }

但是,如何在 findAll() 等现有父方法上添加 @QueryHints?

谢谢。

【问题讨论】:

  • @oliver-gierke,您知道如何实现这一目标吗?
  • 我也有同样的问题。我试图覆盖它们并添加 @QueryHint 注释,但它们被忽略了。
  • @user791694,请参阅下面stackoverflow.com/a/10876707/418439sgp15 的答案@

标签: spring spring-data-jpa


【解决方案1】:

findAll()、findOne() 等不是 Query(s)。实体上的任何缓存规范都在这些方法中生效。

例如,

@Cacheable
@Entity
public class User {

}

【讨论】:

  • 我有这些设置和 findAll 它进入数据库。有什么我需要打开的吗?
  • @Cacheable 似乎对 findAll() 没有任何影响。我的理解是 findOne() 链接到“二级缓存”,但 findAll() 链接到“查询缓存”。为了缓存 findAll(),我重写了该方法并添加了 @queryhints。
【解决方案2】:

最初,默认 CRUD 方法中不支持查询提示注释,但显然它已在 1.6M1 版本中得到修复:

https://jira.spring.io/browse/DATAJPA-173

【讨论】:

    猜你喜欢
    • 2013-11-14
    • 2015-07-14
    • 2018-06-08
    • 2012-08-06
    • 2020-02-26
    • 2016-07-10
    • 1970-01-01
    相关资源
    最近更新 更多