Spring Data Jpa方法如下:
someMethod(/* width */ 1024, /* height */ 768);
然后按“ max_borrow_amt desc”排序,但这无效。
该列表无序。
答案 0 :(得分:2)
如果您使用JPA查询,则可以使用Sort作为查询方法的参数来定义排序顺序:
@Query("select m from Model m")
List<Model> getSortedList(Sort sort);
然后,例如:
List<Model> models = getSortedList(Sort.by(Sort.Direction.DESC, "name"));
但是带有本地查询的Spring Data JPA can't use Sort
:
Spring Data JPA当前不支持对本机查询进行动态排序,因为它必须处理声明的实际查询,而这对于本机SQL无法可靠地完成。
不过,您可以改为使用Pageable及其实现PageRequest:
@Query(value = "select m.name as name from models m", nativeQuery = true)
List<ModelProjection> getSortedList(Pageable p);
然后:
List<ModelProjection> modelNames = getSortedList(PageRequest.of(0, 1000, Sort.Direction.DESC, "name"));
P.S。与其使用Object
数组作为返回参数,不如使用projections,例如:
public interface ModelProjection {
String getName();
}
请注意,在这种情况下,好的做法是在查询中使用别名(即m.name as name
)。它们必须与投影中的对应吸气剂匹配。
答案 1 :(得分:1)
谢谢大家! 我的问题已经解决了。
如果您想使用Spring data jpa nativeQuert&Sort,则应这样做:
@Query( 值=“从product_loan_basic pb左选择pb.id,pp.max_borrow_amt加入pb.code = pp.product_code上的product_loan_price pp排序依据?#{#pageable}”, countQuery =“从product_loan_basic选择count(*)”, nativeQuery = true ) 页面findAllProductsAndOrderByAndSort(Pageable pageable);
?#{#pageable}是必需的,countQuery是必需的。
Pageable pageable = new PageRequest(0,1000,Sort.Direction.DESC,"id");
然后对结果进行排序