gpt4 book ai didi

spring-data - Spring Data 以及如何按不在实体中的列排序

转载 作者:行者123 更新时间:2023-12-03 16:54:27 26 4
gpt4 key购买 nike

我是 Java Spring 的新手,并试图了解它是如何工作的。我的目标是对不在实体中的 JPQL 查询应用排序。

我一直在看的引用资料:

Spring Sort Class Docs

Spring Sort crash course

如果我声明以下查询

@Query("SELECT a, b.someColumn FROM TableA a INNER JOIN a.tableB b where a.search like %?1%"
public Page<Object[]> findSomething(String search, Pageable pageable);

这将产生具有以下形式的对象列表
Object[0] = TableA entity
Object[1] = b.someColumn value

我一直在阅读 Sort 类,但我还没有找到通过 b.someColumn 进行排序的方法。

如果我执行以下操作
Sort sort = new Sort(Sort.Direction.DESC, "someColumn");
Page<Object[]> things = mgr.findSomething("junk", sort);

然后 JPQL 结果

SELECT a, b.someColumn FROM TableA a INNER JOIN a.tableB b where a.search like ?1 order by a.someColumn



当我想要它时

SELECT a, b.someColumn FROM TableA a INNER JOIN a.tableB b where a.search like ?1 order by b.someColumn



如何防止它将排序列附加到查询中的实体?有没有办法禁用此功能并使其按字面意思解释我的排序列?是否有更好的排序技术更适合我的情况?
Sort sort = new Sort(Sort.Direction.DESC, "b.someColumn");

最佳答案

好吧,看起来我在原来的问题中回答了我自己的问题。出于某种原因,我的浏览器没有跟上我最近的更改,而且我没有看到排序工作。

引擎将按字面解释排序列。

Sort sort = new Sort(Sort.Direction.DESC, "b.someColumn");

会导致

SELECT a, b.someColumn FROM TableA a INNER JOIN a.tableB b where a.search like ?1 order by b.someColumn



这正是我想要的。

关于spring-data - Spring Data 以及如何按不在实体中的列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32749409/

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