当前位置: 首页 > 知识库问答 >
问题:

使用Spring数据将默认order by id追加到Pageable

裴成文
2023-03-14

我正在使用spring可分页数据和对象。按数据库中可能具有相同值的字段排序时,更改页将检索错误的结果。

我正尝试使用HandlerInterceptorAdapter按id添加默认order,如下所示:

我的拦截器:

public class OrderByIdWebArgumentResolver extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {

        HandlerMethod hm= (HandlerMethod) handler;
        Method method = hm.getMethod();
        OrderById orderById = method.getAnnotation(OrderById.class);
        if (orderById != null) {
            for (MethodParameter parametro : hm.getMethodParameters()) {
                if (parametro.getGenericParameterType().equals(Pageable.class)) {
                    Map<String, String[]> parameters = request.getParameterMap();
                    String[] sortById = new String[2];
                    sortById[0] = "id";
                    sortById[0] = "desc";
                    parameters.put("sort", sortById);
                }

            }

        }

        return true;
    }
}

我的控制器:

@OrderById
@RequestMapping(value = "/print", method = RequestMethod.GET)
public String printMensagges(@ModelAttribute MensaggesOption messageSelector, final ModelMap model,
       @SortDefault(sort = "date", direction = Sort.Direction.DESC) @PageableDefault(value = 5) final Pageable pageable, final Principal principal) {

    //I need the pageable has order by id here or in a service method
    List<Message> messages = messageService.findAll(pageable);

    return "/index";
}

有什么方法可以添加默认订单吗?可以添加具有可分页参数的服务方法吗?

共有1个答案

鲜于华容
2023-03-14

您可以只在@PageableDefault定义中添加排序,而不是添加单独的@SortDefault。

@PageableDefault(sort = {"name", "id"}, direction = Sort.Direction.DESC, value = 5) final Pageable pageable
 类似资料:
  • 问题内容: 我有一个函数,它返回像这样的字典: 我试图将此字典追加到这样的数据框: 不幸的是,数据框的打印导致空的数据框。有任何想法吗? 问题答案: 您没有将值分配给结果。

  • 我有一个关于在Swift iOS中添加Firebase数据到数组的问题。当我对超链接中给出的数据使用运行此代码时,它会给出所具有的元素数。但是,我想把所有的元素都放入一个数组中。 例如,当我运行时,我希望在的情况下获取所有值。并且,将这些元素存储在数组中。你能帮我一下吗? 但是,快照应该有425个这样的元素

  • 问题内容: 我需要更新表名(col1name) 如果已经有数据,我需要将其附加值’a,b,c’如果为NULL,则需要添加值’a,b,c’ 我知道有一个CONCAT参数,但是不确定SQL语法是什么。 以上正确吗? 问题答案: 试试这个查询: 请参阅此sql小提琴演示。

  • 问题内容: 这可能很容易,但是我有以下数据: 在数据框1中: 在数据框2中: 我想要一个具有以下形式的数据框: 我尝试使用该方法,但是得到了交叉连接(即笛卡尔积)。 什么是正确的方法? 问题答案: 通常看来,您只是在寻找联接:

  • 我试图比较两个id,并将一个属性附加到现有的本地存储数据中。在循环中。 这是显示示例数据的代码 简单地说,我试图检查

  • 问题内容: 我是一名初学者,是android / java程序员,我的背景主要是C ++和C#。在C#中,如果我有一个名为myWord的字符串变量,并且其值为“ Hello”,则可以使用+运算符附加其他信息。 我在Java中尝试了这种方法几次,显然因为TextView数据类型为空,所以我无法使用此方法。Android studio给我以下错误:运算符’+’不能应用于’void’,’java.lan