Sortieren Sie die Entität und ihre verschachtelte Sammlung @OneToMany Spring Data JPA mit Pageable
Posted: 12 Jan 2025, 04:23
Gibt es eine Möglichkeit, eine Entität und ihre verschachtelte Sammlung in einer @OneToMany-Beziehung mit einer Pageable-Schnittstelle zu sortieren?
Ich habe diese beiden Entitäten
Dieses Repository
Dieser Dienst
Und dieser Controller
Ich habe andere ähnliche Fragen gefunden, aber in den Antworten wird die Sortierung statisch, wie bei der Annotation @OrderBy, aber die Notwendigkeit besteht darin, dass die Sortierung dynamisch ist, ich meine, ich muss nach jeder Eigenschaft in sortieren Kurs und Rezension. Ich muss auch Pagable verwenden.
Ich brauche so etwas, aber ich habe sie ausprobiert und sortiere nur die Entität „Kurs“, die Entität „Bewertung“ wird nie sortiert
Ich bin neu in all dem, Java, Spring, JPA, Hibernate usw. und würde gerne wissen, ob es eine Möglichkeit gibt, dies zu erreichen?
Ich habe diese beiden Entitäten
Code: Select all
@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 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
}
Code: Select all
@Repository
public interface CourseRepository extends JpaRepository {
}
Code: Select all
@Service
public class CourseService {
@Autowired
CourseRepository courseRepository;
public Page getCourses(Pageable pageable) {
return courseRepository.findAll(pageable);
}
}
Code: Select all
@RestController
@RequestMapping("/api")
public class CourseController {
@Autowired
CourseService courseService;
@RequestMapping(value="/courses", method= RequestMethod.GET)
public ResponseEntity
> readInteractionsPagedParam(Pageable pageable) {
Page pageCourse = courseService.getCourses(pageable);
... To DTO and return it
}
}
Ich brauche so etwas, aber ich habe sie ausprobiert und sortiere nur die Entität „Kurs“, die Entität „Bewertung“ wird nie sortiert
Code: Select all
.../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