20,000 foot view
Stop creating a method for every query permutation. Specifications wrap the JPA Criteria API. Using them makes your code less – and then more – readable and reusable. Check them out.
If you don’t like the ugliness that is implementing individual specifications, Querydsl based Specifications make everything better.
Do yourself a favor and read this article: Springsource Blog: Advanced Spring Data JPA Specifications and Querydsl