如何将订单方向添加到@Query HQL。 (ASC/DESC)
How to add Order Direction to @Query HQL. (ASC/DESC)
我有有效的 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();
}
我有有效的 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();
}