spring-data-jpa 如何使用SPRING DATA和JPA按嵌套属性对嵌套集合进行排序

ttisahbt  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(182)

我想提取一个实体,该实体的集合按嵌套属性排序

class Person {

 @OneToMany
 private List<HobbyPerson> hobbies = new ArrayList<>();

}

class HobbyPerson {

 @ManyToOne
 private person Person;

 @ManyToOne
 private hobby Hobby;
}

class Hobby{

 private String name;

 @OneToMany
 private List<HobbyPerson> hobbies = new ArrayList<>();
}

每当我按id(personRepository.findbyId(person_id))获取一个人时,我只想获取一个人,其爱好按爱好名称排序
我尝试过使用spring数据方法名、@Query注解,但都不起作用。
Spring Data 法:
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.sample-app.finders.strategies 看来只有主体实体的有序化才能实现
@query 注解:
不支持对嵌套属性进行排序

krugob8w

krugob8w1#

我建议您使用带有比较器的SortedSet,或者使HobbyPerson具有可比性,如下所示:

class Person {

 @OneToMany(mappedBy = "person")
 private SortedSet<HobbyPerson> hobbies = new TreeSet<>();

}

class HobbyPerson implements Comparable<HobbyPerson> {

 @ManyToOne
 private Person person;

 @ManyToOne
 private Hobby hobby;

 public int compareTo(HobbyPerson other) {
  return hobby.getName().compareTo(other.getHobby().getName());
 }
}

class Hobby{

 private String name;

 @OneToMany(mappedBy = "hobby")
 private List<HobbyPerson> hobbies = new ArrayList<>();
}

相关问题