【问题标题】:How to introduce dynamic sorting in Query annotated JPQL如何在 Query 注释的 JPQL 中引入动态排序
【发布时间】:2018-04-05 08:54:24
【问题描述】:

我已经定义了以下方法来检索匹配提供的标准与分页支持以及按动态列名排序的应用程序。

@Repository
public interface ApplicationsRepository extends JpaRepository<Applications, Long> 
 @Query(name = "Applications.searchApplication")
Page<Application> search(@Param("roleId")Long userTypeId, @Param("appStatusId")Long appStatusId,
        @Param("searchParam") String searchParam, Pageable pageRequest, 
        @Param("queueType") String queueType);

Here,我发现“Finder 方法 %s 由 NamedQuery 支持” + “并且必须” + "不包含排序参数,因为我们无法修改查询!改用@Query!"

我正在通过以下方式创建 Pageable:

Direction direction = inputDirection == null ? Sort.Direction.DESC : Sort.Direction.ASC;
Sort sort = inputOrderBy == null ? null : new Sort(direction, inputOrderBy);
Pageable pageable =new PageRequest(inPageNo, pagination.inPageSize(), sort);

我担心生成的 Oracle 查询包含“首先获取?仅行”但没有 order by 子句

在这个问题上的任何帮助都会非常有帮助。

环境

spring-data-jpa:1.11.4.RELEASE

hibernate-entitymanager:5.0.12.Final

Java 版本:1.8.0_60,供应商:甲骨文公司

操作系统名称:“windows 7”,版本:“6.1”,arch:“amd64”,家族:“dos”

【问题讨论】:

  • 我们不能使用查询并根据您从请求中获得的标志添加 order by 子句
  • 如果我们必须这样做,您可以分享整个代码,那么也许我们可以考虑解决方案
  • @lab bhattacharjee 您愿意与您的@Query 分享吗?我的意思是Applications.searchApplication

标签: spring hibernate spring-data-jpa


【解决方案1】:

您已经找到错误消息。照它说的做:

使用@Query 指定您的查询,包括创建Page 需要执行的计数查询

【讨论】:

  • 谢谢。按照错误信息后,我已经成功归档了排序和分页。提供计数查询不是强制性的,对吧?
  • 很多情况下,Spring Data JPA 会自己构造计数查询。如果它不抛出异常,它就会做正确的事情。
  • 如果这解决了问题,请接受它(单击复选标记)并投票。尤其是复选标记让其他人很容易找到解决问题的方法。
猜你喜欢
  • 1970-01-01
  • 2021-08-25
  • 2015-06-07
  • 1970-01-01
  • 2013-01-20
  • 1970-01-01
  • 1970-01-01
  • 2019-11-30
  • 1970-01-01
相关资源
最近更新 更多