在联接表时,如何停止从表中的多对多关系中选择子记录?

时间:2019-03-18 06:00:01

标签: hibernate many-to-many querydsl

我知道过去可能会问过这类问题,但我找不到解决特定问题的方法:

我有两个具有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,但是由于性能问题,我不希望这样。 有什么办法可以避免吗?

0 个答案:

没有答案