有没有一种方法可以在带有Pageable接口的@OneToMany关系中对实体及其嵌套集合进行排序?
我有这两个实体
@Entity
@Table(name = "course")
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "course")
private List<Review> reviews = new ArrayList<>();
....contructors, getters and setters
}
@Entity
@Table(name = "review")
public class Review {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String rating;
@ManyToOne
private Course course;
....contructors, getters and setters
}
此存储库
@Repository
public interface CourseRepository extends JpaRepository<Course, Long> {
}
这项服务
@Service
public class CourseService {
@Autowired
CourseRepository courseRepository;
public Page<Course> getCourses(Pageable pageable) {
return courseRepository.findAll(pageable);
}
}
而这个控制器
@RestController
@RequestMapping("/api")
public class CourseController {
@Autowired
CourseService courseService;
@RequestMapping(value="/courses", method= RequestMethod.GET)
public ResponseEntity<Page<CourseDTO>> readInteractionsPagedParam(Pageable pageable) {
Page<Course> pageCourse = courseService.getCourses(pageable);
... To DTO and return it
}
}
我发现了其他类似的问题,但在答案中,排序变成了静态的,比如@OrderBy注解,但需要的是排序将是动态的,我的意思是,我必须在课程和复习中按任何属性排序。我也要用Pagable。
我需要像这样的东西,但我尝试了他们,只排序实体课程,实体审查从来没有排序
.../api/courses?page=0&size=10&sort=name,asc&sort=reviews.rating,asc
.../api/courses?page=0&size=10&sort=name,asc&sort=reviews.rating,desc
.../api/courses?page=0&size=10&sort=name,desc&sort=reviews.rating,asc
.../api/courses?page=0&size=10&sort=name,desc&sort=reviews.rating,desc
我对所有这些都很陌生,Java,Spring,JPA,Hibernate等,我想知道是否有一种方法可以实现这一点?
1条答案
按热度按时间ki0zmccv1#
你应该能够添加一个点“。“之间的位置。
当然,有些事