Подтвердить что ты не робот

Множественная выборка соединения в одном запросе JPQL

У меня ниже объектов:

public class Category {
    private Integer id;
    @OneToMany(mappedBy = "parent")
    private List<Topic> topics;
}

public class Topic {
    private Integer id;
    @OneToMany(mappedBy = "parent")
    private List<Posts> posts;
    @ManyToOne
    @JoinColumn(name = "id")
    private Category parent;
}

public class Post {
    private Integer id;
    @ManyToOne
    @JoinColumn(name = "id")
    private Topic parent;
    /* Post fields */
}

и я хочу получить все категории со связанными темами и связанными сообщениями, используя запрос JPQL. Я написал следующий запрос:

SELECT c FROM Category c JOIN FETCH c.topics t JOIN FETCH t.posts p WHERE ...

Но я получил ошибку

org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags

Я нашел статьи об этой ошибке, но в этих статьях описывается ситуация, когда в одном объекте есть две коллекции для объединения. Моя проблема немного отличается, и я не знаю, как ее решить.

Можно сделать в одном запросе?

Извините за мой плохой английский, но я обычно говорю на другом языке

4b9b3361

Ответ 2

Вот рабочий пример сложного объединения и множественного рассмотрения:

    String query_findByProductDepartmentHospital = "select location from ProductInstallLocation location "
            + " join location.product prod " + " join location.department dep "
            + " join location.department.hospital hos " + " where  prod.name = :product "
            + " and dep.name.name = :department " + " and hos.name = :hospital ";

    @Query(query_findByProductDepartmentHospital)
    ProductInstallLocation findByProductDepartmentHospital(@Param("product") String productName,@Param("department") String departName, @Param("hospital") String hospitalName);