2011-12-26 50 views
2

我很新使用spring-data-jpa,但看起来很有希望。我用它来作这样在我的应用程序的所有库: public interface CustomerRepository extends JpaRepository<Customer, Integer>, JpaSpecificationExecutor<Customer>如何通过spring-data-jpa框架进行自定义搜索?

我看到有一个梅索德呼叫findAll(Specification<T>)进行自定义search.to称这应实现 public Predicate toPredicate(Root<T> root, CriteriaQuery<?> q, CriteriaBuilder cb) 我很困惑如何做一个谓词。我尝试使用上Spring

public static Specification<Customer> isLongTermCustomer() { 
return new Specification<Customer>() { 
    Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, 
     CriteriaBuilder builder) { 

    LocalDate date = new LocalDate().minusYears(2); 
    return builder.lessThan(root.get(Customer_.createdAt), date); 
    } 
}; 

} 我不明白的地方Customer_.createdAt来自的例子。任何帮助将不胜感激:)

回答

4

Customer_来自JPA 2.0静态元模型,应该由一个特殊的工具,如Hibernate Metamodel generator生成。

如果你不想生成静态元模型,你可以做,而不是执行以下操作:

return builder.lessThan(root.<LocalDate>get("createdAt"), date); 
+0

谢谢:)我试图使用休眠,jpamodelgen。它生成元模型,但将其放入目标目录中。在这里有一个GUID如何在eclipse中使用它.http://docs.jboss.org/hibernate/stable/jpamodelgen/reference/en-US/html/chapter-usage.html#d0e325我使用Eclipse Helios和i不要在那里找到注释处理。你知道我可以包括它在我这里的类路径是我的插件 – mettok 2011-12-26 09:37:02

+0

\t \t \t \t org.apache.maven.plugins \t \t \t \t Maven的编译器插件 \t \t \t \t \t \t \t \t \t 1.6 \t \t \t \t \t 1.6 \t \t \t \t \t \t \t \t \t \t \t org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor \t \t \t \t \t \t \t \t \t \t \t \t' – mettok 2011-12-26 09:40:02