hibernate - 如何在spring boot的JPA查询注解中添加动态sql查询?
问题描述
我想在运行时在查询中添加一个排序列。我已将查询注释用于构建查询。我已使用参数“sortCol”在查询中添加排序列。但不知何故,查询注释无法识别“sortCol”帕尔马,因此不使用它。也没有给出任何错误。
SELECT
*
FROM
request r
WHERE
r.asset_type IN (
?, ?, ?
)
AND r.request_type IN (
?, ?
)
AND r.status IN (
?, ?, ?, ?
)
AND r.assign_to = ?
AND (
r.request_custom_id LIKE ?
OR r.project_name LIKE ?
OR r.asset_type LIKE ?
OR r.request_type LIKE ?
)
ORDER BY
? limit ?"
在此之后,我添加了按列名排序的顺序。在运行时:
@Query(value ="SELECT * FROM request r WHERE r.asset_type IN (:assetType) AND r.request_type IN (:requestType) AND r.status IN (:statusList) AND r.assign_to = :assignTo AND ( r.request_custom_id LIKE %:searchTerm% OR r.project_name LIKE %:searchTerm1% OR r.asset_type LIKE %:searchTerm2% OR r.request_type LIKE %:searchTerm3% ) ORDER BY :sort",nativeQuery = true)
Page<Request> findRequestdata(Pageable pageable,
@Param("assetType") List<String> assetType,
@Param("requestType") List<String> requestType,
@Param("statusList") List<Integer> statusList,
@Param("assignTo") Long assignTo,
@Param("searchTerm") String searchTerm,
@Param("searchTerm1") String searchTerm1,
@Param("searchTerm2") String searchTerm2,
@Param("searchTerm3") String searchTerm3,
@Param("sort") String sortCol);
除“sortCol”外,所有帕尔马均已正确设置。请建议我在哪里缺少任何东西。
解决方案
您已经将 Pageable 对象传递给您的方法。
因此,当您创建分页时,您还可以添加排序:
Pageable sortedByName = PageRequest.of(0, 3, Sort.by("name"));
findRequestdata(sortedByName, ...)
在此处阅读更多信息:https ://www.baeldung.com/spring-data-jpa-pagination-sorting
推荐阅读
- c# - 静态类初始化
- multithreading - Powershell Runspacepool - 为什么我不能从同步哈希表输出到 .txt 文件
- excel - 如何将工作簿设置为变量名?
- java - 使用完全自定义的多个规则对字符串列表进行排序
- pagespeed - 为什么即使在图像上添加延迟加载后 Google PageSpeed Insight 仍会在机会中显示一些图像
- javascript - ChartJS Javascript - 如何绘制堆积条形直方图但数据集大小未知
- android - React-native 一致的方式来制作动画视图以获得全高
- python - 我应该在 requirements.txt 中添加什么来从 github 安装这个库?
- python - FPDF __init__ 结合 Python 中的页眉和页脚
- mysql - 将 MySQL 表从一台服务器导入另一台服务器