java 排序实体及其嵌套集合@OneToMany Spring Data JPA with Pageable

cvxl0en2  于 2023-04-28  发布在  Java
关注(0)|答案(1)|浏览(147)

有没有一种方法可以在带有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等,我想知道是否有一种方法可以实现这一点?

ki0zmccv

ki0zmccv1#

你应该能够添加一个点“。“之间的位置。
当然,有些事

相关问题