如何编写基于作为父实体spring数据jpa的一部分的字段对结果进行排序的查询方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何编写基于作为父实体spring数据jpa的一部分的字段对结果进行排序的查询方法相关的知识,希望对你有一定的参考价值。

在Spring数据JPA中,我们可以编写查询方法来执行查询。我有两个实体

class A 
    @Id
    @Column
    private String id;

    private String name;

    @ManyToOne
    @JoinColumn(name = "b_field")
    private B b;


class B 
    @Id
    @KeyField
    @Column
    private String id; 

    private String b_field

我想编写一个查询方法“findByNameOrderByb_field”,即查找所有具有所提供名称的行,并根据B类字段(即b_field)对结果进行排序。写上面的函数不会返回有序的结果。有什么办法可以在spring boot中编写这个orderby方法。

public interface ARepository extends CrudRepository<A, String> 

    List<A> findByNameOrderByb_field(String name);

上述函数不会根据B的b_field返回有序结果。

答案

要访问B的属性,必须在查询方法的声明中包含B的字段名称。

public interface ARepository extends CrudRepository<A, String> 

    List<A> findByNameOrderByb_b_field(String name);

有关SpringData如何解析嵌套属性的更多信息,请参见:

Query Property Expressions

以上是关于如何编写基于作为父实体spring数据jpa的一部分的字段对结果进行排序的查询方法的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Spring数据JPA基于来自另一个实体的列检索实体的数据?

具有父复合 pk 的 JPA OneToMany 是子主键派生实体问题的一部分

随便说说Spring Data JPA(包含分页,复合查询)

周总结10

周总结10

周总结10