как использовать класс SearchCriteria для поиска пользователя по многим терминам, данным пользователем в весенние данные jpa - PullRequest
0 голосов
/ 28 августа 2018

У меня есть класс с именем SearchCriteria, в котором у меня есть свойства, по которым пользователь может искать. Как использовать этот класс с пружиной данных JPA для поиска данных. В приведенном ниже примере. Я использую JpaRepository для создания репозиториев. Должен ли я сделать хранилище для SearchCriteria также и тот же объект также не требуется или какой-либо способ сделать это.

@Entity
class User{  

    @Id
    id;

    fname;
    lname;
    location;
    orders;
    posts;

    //getters & setters
}


class SearchCritiea {
    int radius;//search user in given diameter 
    String fname;
    int ordercount;//search users with oder count  
}

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Вы можете использовать спецификации, чтобы определить предикат многократного использования:

public CustomerSpecifications {

public static Specification<Customer> customerHasBirthday() {
return new Specification<Customer> {
  public Predicate toPredicate(Root<T> root, CriteriaQuery query, CriteriaBuilder cb) {
    return cb.equal(root.get(Customer_.birthday), today);
   }
 };

}

public static Specification<Customer> isLongTermCustomer() {
return new Specification<Customer> {
  public Predicate toPredicate(Root<T> root, CriteriaQuery query, CriteriaBuilder cb) {
    return cb.lessThan(root.get(Customer_.createdAt), new LocalDate.minusYears(2));
    }
   };
  }
}

Теперь вы можете использовать эти предикаты, связывающиеся с AND, ИЛИ NOT OPERATION:

  customerRepository.findAll(where(customerHasBirthday()).and(isLongTermCustomer()));

См. Официальную запись в блоге Spring: https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/

0 голосов
/ 28 августа 2018

Вы можете использовать javax.persistence.criteria.CriteriaQuery для динамического определения запросов:

https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...