2

我对使用 spring-data-jpa 很陌生,但它看起来很有希望。我用它来制作我的应用程序中的所有存储库,如下所示: public interface CustomerRepository extends JpaRepository<Customer, Integer>, JpaSpecificationExecutor<Customer>

我看到有一个方法调用findAll(Specification<T>)来进行自定义搜索。要调用它,你应该实现 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

1 回答 1

4

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

如果您不想生成静态元模型,可以改为执行以下操作:

return builder.lessThan(root.<LocalDate>get("createdAt"), date); 
于 2011-12-26T09:05:47.223 回答