如何使用QueryDsl和PageRequest类按多列/字段(X集合的总大小)的组合值进行排序?

时间:2015-12-03 22:24:15

标签: java spring mongodb sorting querydsl

我使用的是QueryDsl和MongoDB 这是我正在对狗库进行的调用:

return findAll(predicate, pageRequest);

我相信这一切都与创建正确的PageRequest对象有关。

您需要知道的事项:
实体"狗"包含" Basic"," CertificatesAndTitles"," Show" s。的集合。 "具有基本"有血统名称 " CertificatesAndTitles"拥有3个系列:冠军,JuniorChampions,countryChampions。" Show"实体包含"标题"的集合。

请注意,这些只是一些属性,其他无关紧要。它必须是这样的,其他人制造它并且它是一个要求。

对我来说工作

new PageRequest(page, size, new Sort(Direction.ASC, "basic.pedigreeName"))

按谱号名称按字母顺序对狗进行分类。

但是,我还没有实现主要排序。为了做到这一点,我必须总结一下champatsats,juniorChampions,countryChampions,title和sort的大小。


到目前为止我尝试过的是不工作(目前只有一个系列):

new PageRequest(page, size, new Sort(Direction.DESC, "certificatesAndTitles.championats.size()"))
new PageRequest(page, size, new Sort(Direction.DESC, "QDog.dog.certificatesAndTitles.championats.size()"))
new PageRequest(page, size, new Sort(Direction.DESC, "size(certificatesAndTitles.championats)"))
new QPageRequest(page, size, new QSort(new OrderSpecifier<>(Order.DESC, QDog.dog.certificatesAndTitles.championats.size())))

我不想创建其他数据库字段作为总计数器&#39;因为它感觉不好,而且这个项目中有更多的排序组合。它只是其中之一。

即使我们设法使它工作,如何组合多个集合的大小值?

我花了很长时间寻找答案。在SQL中它很简单,但这是mongo,我不知道如何在QueryDsl中创建它。任何帮助将不胜感激。

0 个答案:

没有答案