Я использую Spring Data + Hibernate и имею объект с несколькими полями @ManyToOne. Каждое поле извлекается спящим режимом с помощью отдельного запроса select.
Я уже пробовал @Fetch(value = FetchMode.JOIN), но бесполезно,
Пример:
@Entity
public class MyEntity{
@Id
private Long id;
@JoinColumn(name = "A")
@Fetch(value = FetchMode.JOIN)
@ManyToOne
private A a;
@ManyToOne
@Fetch(value = FetchMode.JOIN)
@JoinColumn(name = "B")
private B b;
}
Hibernate выполнит 3 обхода базы данных для MyEntity, A и B.
Есть ли способ получить мою сущность и все ее поля с помощью одного выбора, где A и B будут объединены >.?
Изменить:
Объекты A и B определены следующим образом:
@Entity
public class A{
@Id
Long id;
String name;
}
Репозиторий выглядит так (Spring Data создает реализацию):
public interface MyEntityRepository extends CrudRepository<MyEntity , Long> {}
И код, который загружает объект, тоже довольно прост:
myEntityRepository.findAll();
Редактировать 2:
Я только что написал запрос QueryDSL, и для него был выполнен только 1 выбор. Я доволен по крайней мере этим.