我知道过去可能会问过这类问题,但我找不到解决特定问题的方法:
我有两个具有ManyToMany
关系的实体A和B,并且在表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();
现在的问题是,通过该查询,我正在获取与B相关联的整套实体C,但是由于性能问题,我不希望这样。 有什么办法可以避免吗?