Имеют таблицу 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;
}