У меня есть две сущности.У них есть отображение OneToOne.Я хочу получить все строки одного объекта вместе со связанными деталями в одном вызове базы данных в JPA.
Я пробовал загрузку EAGER.Но он выбирает все строки книги за один вызов, а затем выбирает book_additional_details один за другим.Я хочу получить все строки с соответствующими строками таблицы в одной БД (например, с помощью SQL-запроса с объединением).
@Entity
@Table("book")
public class Book{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
Long id;
@Column("name")
private String name;
@OneToOne(fetch = FetchType.EAGER, mappedBy = "book", cascade = CascadeType.PERSIST)
@JsonManagedReference
private BookAdditionalDetail bookAdditionalDetail;
}
@Entity
@Table(name = "book_additional_detail")
public class BookAdditionalDetail{
@Id
Long id;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id")
@MapsId
@JsonBackReference
private Book book;
@column("author_name")
private String authorName;
}
bookRepo.findAll()
bookRepo.findAll () будет получать все строки книги в одном вызове SQLи затем один за другим запускает sql-запросы для получения book_additional_details.Я хочу, чтобы bookRepo.findAll () извлекал все эти детали в одном вызове sql.Желательно иметь решение, которое не использует собственный запрос (Предпочтительное решение путем управления аннотациями).