С QueryDSL предикатами вы можете создать класс для создания запроса, используя построитель запросов
Как это:
public class OrderPredicates {
private OrderPredicates() {
}
public static Predicate findByCriteria(OrderSearchCriteria orderSearchCriteria) {
QOrder order = QOrder.order;
BooleanBuilder builder = new BooleanBuilder();
if(orderSearchCriteria.getUsername!=null){
builder.or(order.username
.eq(orderSearchCriteria.getUsername));
}
//Some other predicates
return builder;
}
}
Но если вы хотите извлечь список Order по принципалу, вы можете создать специальный запрос
Первый: удалить переопределение
Второе: определение запроса с интуитивно понятным именем
Третье: использовать запрос параметра
@Query("from Orders o where o.username = :username")
Page<Order> findAllByUser(@Param(value="username") String username, Pageable pageable);