Сортировка списка объединенных объектов с помощью Spring Data - PullRequest
0 голосов
/ 04 мая 2020

Имеют таблицу cars и вложенные wheels отношения многие к одному.

Как:

CREATE TABLE IF NOT EXISTS wheel
(
    id         BIGSERIAL PRIMARY KEY,
    created_at TIMESTAMP NOT NULL,
    car_id     BIGINT REFERENCES cars (id)
);

CREATE TABLE IF NOT EXISTS cars
(
    id       BIGSERIAL PRIMARY KEY,
);

Мне нужно выбрать один Car объект id со списком вложенных колес (стратегия EAGER), но объекты колеса должны быть отсортированным по дате создания и быть Page объектом с нумерацией страниц.

Я знаю, как это сделать с двумя запросами. Получить машину и получить Weels отдельно и союз.

Но вопрос в том, могу ли я сделать то же самое с одним единственным запросом с использованием Pageable, или любой стандартной функцией Spring, такой как repository.findAll(where(specification), pagination), или с чем-то еще?

@Entity
@Table(name = "cars")
public class Car {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @OneToMany(mappedBy = "car", fetch = FetchType.EAGER)
    private Page<Wheel> wheels; // Should be sorted by createdAt 
}

@Entity
@Table(name = "wheels")
public class Wheel {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private Timestamp createdAt;

    @ManyToOne
    @JoinColumn(name = "car_id")
    private Car car;
}
...