当前位置: 首页 > 知识库问答 >
问题:

如何指定在SpringData和QueryDSL中使用的多列OrderSpecifier?这可能吗

太叔凌龙
2023-03-14

所以我在下面有以下的质疑:

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排序,有点像“Order by dealerType asc,dealerCode desc”。如何实例化OrderSpecifier,使结果按dealerType排序,然后按dealer代码排序。

DealerRepository dlrRpstry扩展了JPararePository、QueryDslPredicateExecutor

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

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

如有任何帮助,将不胜感激。提前道谢。

尼克

共有1个答案

薛华奥
2023-03-14

我没有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

 类似资料:
  • 本文向大家介绍springData使用QueryDsl的示例代码,包括了springData使用QueryDsl的示例代码的使用技巧和注意事项,需要的朋友参考一下 经过多年,spring data jpa越来越完善,在版本迭代的过程中,会不断增加功能,今天看新的reference发现有Querydsl.然后搜索到上面的参考资料2 无论是JpaSpecificationExecutor,还是Quer

  • 我得到了以下数据结构 我正在寻找一个查询dsl谓词,它给我的所有出版物,其中任何Author.name包含某个字符串,例如“汉斯” 我试过了: 但是,如果有多个作者在名称中包含“Hans”,则这是抱怨。有没有像出版一样就像一个集合?

  • 在任何情况下,我不想重复计数的每一个页面我需要,这个信息是需要的只是第一次调用。

  • 我刚用了Fromsqlraw。在Microsoft tutorial enter link description here中,使用FromSqlRaw必须选择所有列(请注意,我还没有看到一些好的例子)。但我想要的是在连接几个表时选择一些特定的列。 首先,我连接了两个表,如下所示(RequestMaterial将Request的键作为外键): 错误消息是“底层阅读器没有预期的那么多字段”。 当我尝

  • 这基本上与此相反:如何使用Spring JPA执行分页QueryDSL查询? 这是一个自定义查询,我不能使用任何findAll()方法。