Невозможно получить присоединяющиеся ленивые коллекции - PullRequest
1 голос
/ 09 ноября 2019

Я не могу выполнить простую выборку из-за MultipleBagFetchException.

@Entity
public class Person {

    @OneToMany(mappedBy="person",fetch=FetchType.LAZY)
    private List<Auto> autos;    
}


@Entity
public class Auto {

    @ManyToOne
    @JoinColumn(name = "person_id", nullable = false)
    private Person person;

   @OneToMany(mappedBy="auto",fetch=FetchType.LAZY)
   private List<Tool> tools;

}

@Entity
@Table(name="tool")
public class Tool {

    @ManyToOne
    @JoinColumn(name = "auto_id", nullable = false)
    private Auto auto;
}

Как вы видите, все мои ассоциации используют тип выборки по умолчанию.

 @Query("SELECT p FROM Person p JOIN FETCH p.autos a JOIN FETCH a.tools")
 List<Person>findAll();

результат:

Caused by: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags: [com.example.entities.Person.autos, com.example.entities.Auto.tools]

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

И в довершение всего, предположим, что нам не разрешено касаться сущностей. Как решить это только на стороне запроса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...