Spring Boot 2.0.1.RELEASE project with Spring Data JPA and Spring Data REST. It seems that the sort parameter in the REST endpoint is ignored (but the same repository method do work in a unit test). The repository is the following:
@RepositoryRestResource(collectionResourceRel = "orders", path = "orders") public interface OrderRepository extends PagingAndSortingRepository<OrderEntity, Integer>, OrderRepositoryExtended { @Query(value = "FROM OrderEntity a WHERE " + " (a.orderDateTime BETWEEN :dateFrom AND :dateTo) AND" + " (" + " :searchTerm IS NULL OR" + " (LOWER(a.customer.companyName) LIKE '%' || LOWER(:searchTerm) || '%') OR" + " (LOWER(a.orderCode) LIKE '%' || LOWER(:searchTerm) || '%')" + " )" ) Page<OrderEntity> findByOrderDateTimeBetweenAndSearchTerm( @RequestParam(name = "dateFrom") @Param("dateFrom") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime dateFrom, @RequestParam(name = "dateTo") @Param("dateTo") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime dateTo, @RequestParam(name = "searchTerm") @Param("searchTerm") String searchTerm, Pageable pageable); }
The entity (edited) is as follows:
@Entity @Table(name = "T_ORDERS") @Data @NoArgsConstructor @Cacheable(false) public class OrderEntity { @Id @GeneratedValue(strategy= GenerationType.AUTO, generator = "native") @GenericGenerator(name = "native", strategy = "native") @Column(name = "ID_ORDER") @JsonProperty("id_order") private int id; @Column(name = "DATE_ORDER") @JsonProperty("date_order") private LocalDateTime orderDateTime; } When I try to invoke it using the exported REST endpoint, for example:
The sort parameter is ignored as you can see in the generated query (edited for clarity):
select orderentit0_.id_order as id_order1_21_ ... from t_orders orderentit0_ cross join t_customers customeren1_ where orderentit0_.id_customer=customeren1_.id_customer and (orderentit0_.date_order between ? and ?) and (? is null or lower(customeren1_.company_name) like concat('%' lower(?) '%') or lower(orderentit0_.order_code) like concat('%' lower(?) '%')) limit ? I've already tried simplifing the WHERE expression removing the LIKE conditions but with no luck.
Thanks!