【发布时间】:2015-12-21 08:26:34
【问题描述】:
我是 Java Spring 的新手,并试图了解它是如何工作的。我的目标是对不在实体中的 JPQL 查询应用排序。
我一直在看的参考资料:
如果我声明以下查询
@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");
【问题讨论】:
标签: spring-data jpql