@Entity
public class A {
@Id
private Long id;
@OneToMany(cascade = ALL, orphanRemoval = true)
@JoinColumn(name = "aId")
@Fetch(FetchMode.SELECT)
private List<B> bList;
}
@Entity
public class B {
@Id
private Long id;
private Long aId;
@OneToMany(cascade = ALL, orphanRemoval = true)
@JoinColumn(name = "bId")
@Fetch(FetchMode.JOIN)
private List<C> cList;
}
@Entity
public class C {
@Id
private Long id;
private Long bId;
}
当加载类型A的对象(session.get(A.class,1L))时,将忽略为B中的C对象列表指定的连接fechmode。执行3个查询: 选择一个 ... 选择B ...... 选择C ......
当加载类型B的对象(session.get(B.class,1L))时,加入fetchmode并且只执行1个查询
选择B ... 左外连接C ...
我想要的是在加载A类对象时只需要2个查询: 选择一个 ... 选择B ...... 左外连接C ...
任何人都知道如何实现这一目标?