数据库中有两个表,它们一对一地建立关系。
实体类包含与以下内容相似的内容:
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。
答案 0 :(得分:0)
根据the documentation,您可以完全忽略JPQL并执行以下操作:
Page<MyEntity> findAllOrderByMyOtherEntityName();
与JPQL相比,您应该始终偏爱使用spring数据查询。如果您的方法将足够易读... ...它更容易且不易出错。另外:它使字符串和程序逻辑脱钩,这是每个认真的开发人员都应该做的。
如果您想创建更复杂的语句:请看QueryDSL-它使您能够在将类型安全查询很好地集成到spring数据JPA中的同时编写类型安全查询,它们得到了官方支持(!)