Я знаю, что такие вопросы могли задаваться в прошлом, но я не мог найти решение своей конкретной проблемы:
У меня есть две сущности A и B, имеющие ManyToMany
отношение, и там первичные ключи хранятся в таблице AB, изображающей их отношение:
public class A {
@Id
private Integer id1;
@ManyToMany(fetch=FetchType.Lazy,joinColumn)
@JoinTable(name="AB",joinColumns = { @JoinColumn(name = "id1", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "id2", nullable = false, updatable = false) })
private Set<B> bs;
}
public class B {
@Id
private Integer id2;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "bs")
private Set<A> as;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "b")
@Cascade({ CascadeType.ALL, CascadeType.DELETE_ORPHAN })
private Set<C> cs;
}
Я пытаюсь получить запрос из списка ниже:
from(a)
.where(a.id1.eq(id))
.leftJoin(a.bs,b).fetchJoin().fetchOne();
Теперь проблема в том, что я получаю весь набор объектов C, связанных с B, с помощью этого запроса, но я не хочу этого из-за проблем с производительностью.
Есть ли способ, которым я могу избежать этого?