2012-02-21 14 views
9

Jestem w stanie używać Query Cache z Spring Data JPA dla moich niestandardowych metod zapytań jak poniżej.Jak dodać QueryHints w domyślnych metodach JPA wiosennych danych?

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); } 

Jak dodać @QueryHints do istniejących metod macierzystych, takich jak findAll()?

Dzięki.

+0

@oliver -gierke, masz pojęcie, jak to osiągnąć? –

+0

Mam ten sam problem. Próbowałem je zastąpić i dodać adnotacje @QueryHint, ale są one ignorowane. –

+0

@ user791694, zobacz odpowiedź sgp15 poniżej: http://stackoverflow.com/a/10876707/418439 –

Odpowiedz

3

findAll(), findOne() itp. Nie są kwerendami. Wszelkie specyfikacje buforowania w jednostce odnoszą skutek w tych metodach.

Na przykład

@Cacheable 
@Entity 
public class User { 

} 
+0

Zobacz także pokrewne [@ ustawienie buforowania] (http://stackoverflow.com/a/3664293/418439) –

+0

Mam te set i for findAll przechodzi do bazy danych. Czy jest coś, co muszę włączyć? –

+0

@ Cacheable nie ma żadnego wpływu na findAll(). Rozumiem, że funkcja findOne() jest powiązana z "pamięcią podręczną poziomu 2", ale findAll() jest połączona z "pamięcią podręczną zapytań". Aby buforować findAll(), nadpisałem metodę i dodałem @ queryhints. –

Powiązane problemy