我使用的是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中创建它。任何帮助将不胜感激。