gpt4 book ai didi

java - Spring 数据 REST : sort parameter is ignored

转载 作者:行者123 更新时间:2023-11-30 10:06:35 25 4
gpt4 key购买 nike

带有 Spring Data JPA 和 Spring Data REST 的 Spring Boot 2.0.1.RELEASE 项目。 REST 端点中的 sort 参数似乎被忽略了(但相同的存储库方法在单元测试中确实有效)。存储库如下:

@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);

实体(已编辑)如下:

@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;

}

当我尝试使用导出的 REST 端点调用它时,例如:

http://localhost:8080/api/v1/orders/search/findByOrderDateTimeBetweenAndSearchTerm?dateFrom=2018-01-01T00:00:00&dateTo=2018-12-01T00:00:00&sort=orderDateTime&searchTerm=O-2018

sort 参数被忽略,您可以在生成的查询中看到(为清楚起见进行了编辑):

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 ?

我已经尝试过简化 WHERE 表达式,删除 LIKE 条件,但没有成功。

谢谢!

最佳答案

您的属性的“导出”名称是 date_order。不仅在json请求中应该这样使用,在请求参数中也应该这样使用。

@Column(name = "DATE_ORDER")
@JsonProperty("date_order")
private LocalDateTime orderDateTime;

试试这个方法:

http://localhost:8080/api/v1/orders/search/findByOrderDateTimeBetweenAndSearchTerm?dateFrom=2018-01-01T00:00:00&dateTo=2018-12-01T00:00:00&sort=date_order&searchTerm=O-2018

( 排序=日期顺序 )

关于java - Spring 数据 REST : sort parameter is ignored,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54594345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com