gpt4 book ai didi

java - Spring-Data-JPA分页

转载 作者:搜寻专家 更新时间:2023-10-31 20:28:52 25 4
gpt4 key购买 nike

我正在使用 Datatables用于显示订单列表的 jQuery 插件。在调试我的应用程序时,我偶然发现了以下不一致之处。

为了检索数据,我对自定义查询使用了@Query-Notation:

@Query("select op from OrderPosition  " +
"op where op.order.created >= ?1" +
" and op.depot in ?2" +
" and op.order.deliveryAddress.deliveryMode in ?3" +
" and op.pickStatus in ?4 and op.order.id like ?5 ")
Page<OrderPosition> findOrderpositionsByFilterStatus(Date date, List<Integer>depots, List<DeliveryMode> deliveryModes, List<ArticleStatusType> pickStatus, String sSearch, Pageable p);

发生的错误如下:

我有一组 81 个 Orderpositions 测试数据。在前端,我可以按几个标准进行过滤。其中一个标准是 deliveryMode(express|standard)。我一次显示 10 个条目。 express 的总数为 6。当翻阅页面时,仅显示 2 个 express。在 express 上进行显式过滤时,我得到了全部 6 个。

当我添加某种顺序时,例如:

@Query("select op from OrderPosition  " +
"op where op.order.created >= ?1" +
" and op.depot in ?2" +
" and op.order.deliveryAddress.deliveryMode in ?3" +
" and op.pickStatus in ?4 and op.order.id like ?5 " +
"order by op.order.id desc")
Page<OrderPosition> findOrderpositionsByFilterStatus(Date date, List<Integer>depots, List<DeliveryMode> deliveryModes, List<ArticleStatusType> pickStatus, String sSearch, Pageable p);

我得到了全部 6 个。

是什么让我想到这个问题:

当使用非注释查询时——无论是通用的findAll()还是来自方法名称的查询——Spring-Data-JPA 是否在内部使用order by-子句,当检测到一个可分页?或者相反:当使用 pageable 时,我是否必须在每个自定义查询中添加一个 order by 子句?

最佳答案

是的。如果您未进一步指定,Spring Data 使用 OrderBy(具有默认 desc)。查看日志:

SELECT t0.oid, t0.jpaversion, t0.amount, [...]
FROM [...]
WHERE [..] AND (t13.jpatype IS NULL OR t13.jpatype IN (?))
ORDER BY t0.oid DESC LIMIT ?, ?

关于java - Spring-Data-JPA分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18741730/

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