0

我尝试使用特定排序顺序获取 MySQL 查询结果:

mysql schema
  item_id     varchar
  item_name   varchar
  category    varchar
  price       double
  create_date datetime

select * from item where category in ("fruit", "meat", "vegetable")
order by FIELD(category, "fruit", "meat", "vegetable")

它按预期工作(“水果”项目首先出现,“肉类”其次,“蔬菜”最后)。

但我目前坚持使用 Spring 的页面请求功能实现。

ItemRepository itemRepository;
Pageable pageable = PageRequest.of(page, size, Sort.sort("category"));
itemRepository.findItems(pageable);

我正在寻找类似的解决方案

Pageable pageable = PageRequest.of(page, size, Sort.sort({"fruit", "meat", "vegetable"}));

更新解决方案:通过在存储库中添加本机查询并将类别参数传递给存储库来解决:

项目存储库:

@Query(value = "select * from category order by Field(category, :category) ASC ", nativeQuery = true) List<ItemEntity> findItems(@Param("category") String categoryId, Pageable pageable);

物品服务:

ItemRepository itemRepository;
Pageable pageable = PageRequest.of(page, size);
itemRepository.findItems(category, pageable);
4

0 回答 0