Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何向@Query HQL添加订单方向。(ASC/DESC)_Spring_Hibernate_Hql - Fatal编程技术网

Spring 如何向@Query HQL添加订单方向。(ASC/DESC)

Spring 如何向@Query HQL添加订单方向。(ASC/DESC),spring,hibernate,hql,Spring,Hibernate,Hql,我有工作的HQL代码: @Query("SELECT prod FROM Product as prod ORDER BY prod.rating ASC") List<Product> findProductsByRatingASC(); @Query(“按产品评级ASC从产品中选择产品作为产品订单”) 列出findProductsByRatingASC(); 但我需要获得按评级排序的产品列表(降序或升序) 我需要像这样的东西: @Query("SELECT prod

我有工作的HQL代码:

@Query("SELECT prod FROM Product as prod ORDER BY prod.rating ASC")
    List<Product> findProductsByRatingASC();
@Query(“按产品评级ASC从产品中选择产品作为产品订单”)
列出findProductsByRatingASC();
但我需要获得按评级排序的产品列表(降序或升序)

我需要像这样的东西:

@Query("SELECT prod FROM Product as prod ORDER BY prod.rating ?1")
    List<Product> findProductsByRating(String orderDir);
@Query(“按产品评级从产品中选择产品作为产品订单?1”)
列出findProductsByRating(字符串orderDir);

如果orderDir可以是
ASC
DESC
,则
@Query
很可能是在引擎盖下执行的。不能使用bind参数来控制
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();

是 啊这是一个很好的答案。。。但是有没有其他方法可以将该查询添加到字符串和placeintro查询之后?…没有,据我所知没有。顺便说一句,即使Hibernate接受您的查询,它也会生成如下内容:
selectprodfromproduct as prod ORDER By prod.rating'ASC'
。。。仔细记录所发生的事情;排序顺序现在显示为字符串文字。
String order = "ASC";
if ("ASC".equals(order))  {
    findProductsByRatingASC();
}
else {
    findProductsByRatingDESC();
}