У меня следующий код
public class Product extends AbstractEntity<Long> {
...
@ManyToMany(targetEntity = Category.class, fetch = FetchType.EAGER)
@JoinTable(name = "product_categories", joinColumns = @JoinColumn(name = "product_id"),
inverseJoinColumns = @JoinColumn(name = "category_id"))
private List<Category> categories;
@OneToMany(targetEntity = ProductImage.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "product_id", referencedColumnName = "id")
private List<ProductImage> images;
...
}
Как мы видим, было два отношения, и это показывает ошибку MultipleBagFetchException. Один из них должен быть удален.
Изначально я привык к Laravel framework и newb ie к springboot. У меня есть вопросы по поводу отношений в Springboot JPA -
Есть ли способ определить отношения в сущности класса и загружать их только при необходимости? Например, приведенный выше код - не загружайте никакие реляционные данные в список API, но загружайте все реляционные данные (бренд, категории, изображения) в подробном API продукта.
Отдельно SQL запрос для каждого отношения вместо объединения - я думаю, что объединение нескольких отношений имеет декартово произведение, чтобы объединить несколько реляционных результатов, что было бы слишком дорого.