2012-02-21 4 views
9

다음과 같이 스프링 데이터 JPA와 함께 쿼리 캐시를 사용하여 내 사용자 지정 쿼리 메서드를 사용할 수 있습니다.기본 스프링 데이터 JPA 메소드에 QueryHints를 추가하는 방법?

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를 추가하는 방법은 무엇입니까?

감사합니다.

+0

@oliver -gierke, 어떻게이 아이디어를 얻을 수 있습니까? –

+0

나는 똑같은 문제가있다. 나는 그것들을 오버라이드하고 @QueryHint 어노테이션을 추가하려고 시도했지만 무시된다. –

+0

@ user791694 아래 sgp15의 대답을 참조하십시오. http://stackoverflow.com/a/10876707/418439 –

답변

3

findAll(), findOne() 등은 Query가 아닙니다. 엔티티에 대한 캐싱 스펙은이 메소드에서 유효합니다. 예를 들어

, 원래

@Cacheable 
@Entity 
public class User { 

} 
+0

관련 항목 [@Cacheable setting] (http://stackoverflow.com/a/3664293/418439) –

+0

setAll은 데이터베이스에 저장됩니다. 내가 켤 필요가 있니? –

+0

@ Cacheable이 findAll()에 영향을 미치지 않는 것 같습니다. 나의 이해는 findOne()이 "Level 2 캐시"에 링크되어 있지만 "쿼리 캐시"에 연결된 findAll()이다. findAll()을 캐시하려면 메서드를 재정의하고 @ queryhints를 추가하십시오. –

관련 문제