spring - 如何将订单方向添加到@Query HQL。(升序/降序)
问题描述
我有工作 HQL 代码:
@Query("SELECT prod FROM Product as prod ORDER BY prod.rating ASC")
List<Product> findProductsByRatingASC();
但我需要获取按评级排序的产品列表(按降序或升序)。
我需要类似的东西:
@Query("SELECT prod FROM Product as prod ORDER BY prod.rating ?1")
List<Product> findProductsByRating(String orderDir);
orderDir 可能在哪里ASC
或DESC
解决方案
很可能在幕后@Query
只是使用准备好的语句来实现。不能使用绑定参数来控制ORDER BY
子句的方向。这里的一种解决方法是只维护两个单独的查询,一个用于每个排序方向:
@Query("SELECT prod FROM Product as prod ORDER BY prod.rating")
List<Product> findProductsByRatingASC();
@Query("SELECT prod FROM Product as prod ORDER BY prod.rating DESC")
List<Product> findProductsByRatingDESC();
然后,在您的应用程序代码中,检查传入的排序方向并调用适当的方法,例如
String order = "ASC";
if ("ASC".equals(order)) {
findProductsByRatingASC();
}
else {
findProductsByRatingDESC();
}
推荐阅读
- python - 如何附加不同的时间戳数据帧?
- javascript - IIFE 用于避免名称冲突?
- cluster-analysis - 数据缩减/转换
- mysql - 如何从三个表中计数?
- html - 无法在谷歌地图右上角定位按钮
- unity3d - Unity 依赖注入 - DependencyResolver.current.GetService() 为 Web API 返回 null
- neo4j - Neo4j Cypher - 分别并按顺序获取多条路径上的节点
- vb.net - 外部程序退出后出现“调用线程必须是STA,因为许多UI组件需要这个”错误
- azure - 使用逻辑应用从 IoT Central 获取数据但单独的电子邮件
- angular - 如何解决AngularDart“忽略