gpt4 book ai didi

spring-data-jpa - 您如何指定在SpringData和QueryDsl中使用的多列OrderSpecifier?这可能吗

转载 作者:行者123 更新时间:2023-12-04 07:06:41 24 4
gpt4 key购买 nike

因此,我在下面有以下查询:

public Iterable<Dealer> findAll(Dealer dealer) {
QDealer qdealer = QDealer.dealer;

BooleanExpression where = null;
if(dealer.getId() != null && dealer.getId() != 0) {
buildPredicate(qdealer.id.goe(dealer.getId()));
}

OrderSpecifier<String> sortOrder = QDealer.dealer.dealerCode.desc();
Iterable<Dealer> results = dlrRpstry.findAll(where, sortOrder);
return results;
}

上面的查询工作正常。但是,我想首先按DealerType对结果进行排序,然后再按DealerCode对结果进行排序,类似于“按DealerType asc,dealerCode desc排序”。我如何实例化OrderSpecifier,以便将结果按DealerType然后按经销商代码排序。

DealerRepository dlrRpstry扩展了JpaRepository,QueryDslPredicateExecutor

我正在使用spring-data-jpa-1.1.0,spring-data-commons-dist-1.3.2和querydsl-jpa-2.9.0。

如果不能将OrderSpecifier配置为多列排序顺序,那将是替代解决方案,它将满足我对结果进行“按DealerType asc,dealerCode desc排序”的要求。

任何帮助将不胜感激。提前致谢。

缺口

最佳答案

我没有JPA安装设置,但是我相信阅读QueryDslJpaRepository文档后,您可以执行以下操作:

OrderSpecifier<String> sortOrder1 = QDealer.dealer.dealerType.asc();
OrderSpecifier<String> sortOrder2 = QDealer.dealer.dealerCode.desc();
Iterable<Dealer> results = dlrRpstry.findAll(where, sortOrder1, sortOrder2);

让我们知道它是否有效。这是一个指向stackoverflow问题/答案的链接,该链接解释了findAll()方法上的...参数语法:

https://stackoverflow.com/a/12994104/2879838

这意味着您可以将任意数量的OrderSpecifier作为函数的可选参数。

关于spring-data-jpa - 您如何指定在SpringData和QueryDsl中使用的多列OrderSpecifier?这可能吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20090098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com