Spring Data JPA-是否可以按属性对字段进行排序?

时间:2019-04-03 21:26:01

标签: spring jpa spring-data-jpa

数据库中有两个表,它们一对一地建立关系。

实体类包含与以下内容相似的内容:

Entity
@Table(name = "my_other_table")
public class MyOtherEntity {
    private String name;
}

然后,我们还有另一个类以一对一的关系对表进行建模:

public class MyRepository extends PagingAndSortingRepository<MyEntity, Long> {
    @Query("SELECT m from MyEntity m INNER JOIN  m.myOtherEntity mo")
    Page<MyEntity> search(Pageable pageable);
}

还有一个简化的存储库:

Pageable

此存储库是通过接收name作为参数的控制器调用的。

MyOtherEntity中的sort=myOtherEntity.name 字段排序时查询参数应如何显示?

我尝试过:

ORDER BY clause is not in SELECT list

但我知道

{{1}}

我也不能选择打印生成的SQL。

1 个答案:

答案 0 :(得分:0)

根据the documentation,您可以完全忽略JPQL并执行以下操作:

Page<MyEntity> findAllOrderByMyOtherEntityName();

与JPQL相比,您应该始终偏爱使用spring数据查询。如果您的方法将足够易读... ...它更容易且不易出错。另外:它使字符串和程序逻辑脱钩,这是每个认真的开发人员都应该做的。

如果您想创建更复杂的语句:请看QueryDSL-它使您能够在将类型安全查询很好地集成到spring数据JPA中的同时编写类型安全查询,它们得到了官方支持(!)