2012-02-21 20 views
9

Puedo usar Query Cache con Spring Data JPA para mis métodos de consulta personalizados como a continuación.¿Cómo agregar QueryHints a los métodos de Spring Data JPA predeterminados?

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

Sin embargo, ¿cómo agregar @QueryHints en métodos parentales existentes como findAll()?

Gracias.

+0

@oliver -Gierke, ¿tienes alguna idea de cómo lograr esto? –

+0

Tengo el mismo problema. Traté de anularlos y agregar las anotaciones @QueryHint, pero se ignoran. –

+0

@ user791694, consulte la respuesta de sgp15 a continuación http://stackoverflow.com/a/10876707/418439 –

Respuesta

3

findAll(), findOne() etc. no son consultas. Cualquier especificación de caché en la entidad tiene efecto en estos métodos.

Por ejemplo,

@Cacheable 
@Entity 
public class User { 

} 
+0

Consulte también relacionado [@Cacheable setting] (http://stackoverflow.com/a/3664293/418439) –

+0

Tengo estos set y the para findTodo va a la base de datos. ¿Hay algo que necesite encender? –

+0

@ Cacheable no parece tener ningún efecto en findAll(). Tengo entendido que findOne() está vinculado a la "caché de nivel 2", pero findAll() está vinculado a la "caché de consultas". Para almacenar en caché el findAll(), he anulado el método y agregué los @ queryhints. –

1

Originalmente, no había apoyo para las anotaciones sugerencia de consulta en los métodos CRUD por defecto, pero al parecer se ha fijado para la versión Hass 1.6M1:

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

Cuestiones relacionadas