2011-12-26 8 views
2

Я очень новичок в использовании spring-data-jpa, но выглядит очень многообещающим. Я использовал его, чтобы сделать все хранилище в моем приложении, как это: public interface CustomerRepository extends JpaRepository<Customer, Integer>, JpaSpecificationExecutor<Customer>Как сделать индивидуальный поиск по базе данных spring-data-jpa?

Я вижу, что есть Methode вызов 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. Он генерирует метамодель, но он помещает ее в целевой каталог. Здесь есть руководство, как использовать его в eclipse.http: //docs.jboss.org/hibernate/stable/jpamodelgen/reference/en-US/html/chapter-usage.html#d0e325 Я использую Eclipse Helios и i dont найти обработку аннотации там. Вы знаете, как я могу включить его в моем классе здесь путь мой плагин – mettok

+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 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