我的PageRequest就是这样
PageRequest pageReq = new PageRequest(0, 1, Direction.DESC, "lastDate-firstDate");
但是当我运行代码时,会出现这样的错误
“排序表达式'lastDate-firstDate:DESC'必须仅包含在select子句中使用的属性引用或别名。
这里firstDate和lastDate是实体列的名称,我想获取在上一个和第一个Date之间差异最大的实体。
有什么想法,上面的代码有什么问题吗?
答案 0 :(得分:0)
使用以下类似的方法进行真正的复杂排序
PageRequest.of(0, 1, Sort.by(Arrays.asList(Order.desc("lastDate"), Order.desc("firstDate"))));
但是,由于它们都朝着相同的方向,因此可以通过示例来完成诸如此类的简单操作。
PageRequest.of(0, 1, Direction.DESC, "lastDate", "firstDate");
实际上再次查看您的问题,我认为您正在尝试通过两个属性的差异(减号)进行排序。考虑到这一点,我怀疑您需要将其添加到选择标准中,如下所示。
"select lastDate - firstDate as timeDiff FROM table"
此时,您可以按两者之间的差异进行排序。我怀疑这样做可能需要您使用@Query,并且几乎肯定会要求您使用诸如findAllOrderBy之类的东西来代替findAll(即,您需要更改查询本身)。