Я не могу выполнить простую выборку из-за 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 для коллекций. Как насчет этого? Это самое простое отношение сущностей.
И в довершение всего, предположим, что нам не разрешено касаться сущностей. Как решить это только на стороне запроса?