Spring JPA Hibernate query cache doesn't work
hibernate, spring-data-jpa
Solution
@Repository
public interface AuthorRepository extends CrudRepository<Author, Integer> {
@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value ="true") })
Author findByName(String name);
}
Should do the trick. (Note: the `@Repository` is not needed because you already extend CrudRepository)
Problem
I use Spring Boot 1.4.1 AND spring-boot-starter-data-jpa When query my custom method like 'findByName(String name)' it's not cache. But when query default method like 'findOne(Interger id)' it's work. application.properties: ``` spring.jpa.properties.hibernate.cache.use_query_cache=true ``` Repository: ``` @Repository public interface AuthorRepository extends CrudRepository<Author, Integer> { Author findByName(String name); } ``` Tests: ``` public class RepositoryTests { @Autowired private AuthorRepository authorRepository; @Test @Transactional public void test() { authorRepository.save(new Author("admin")); // ***Not work. query **5** times. Author author = authorRepository.findByName("admin"); author = authorRepository.findByName("admin"); author = authorRepository.findByName("admin"); author = authorRepository.findByName("admin"); author = authorRepository.findByName("admin"); // ***It's work. query **1** times. Author author = authorRepository.findOne(1); author = authorRepository.findOne(1); author = authorRepository.findOne(1); author = authorRepository.findOne(1); author = authorRepository.findOne(1); } } ```