我为
MainBranch
模型制作了 2 个深度关系,当我得到 MainBranch
时,它将得到 SubBranch
和 SubBranchRef
。我需要得到 MainBranch
和 SubBranch
。对于这个问题我该怎么办?
public class MainBranch{
@Column(name = "name", nullable = false, length = 100)
private String name;
@OneToMany(mappedBy = "mainBranch")
@JsonManagedReference
private List<SubBranch> subBranchs = new ArrayList<>();
}
public class SubBranch{
@Column(name = "name", nullable = false, length = 100)
private String name;
@ManyToOne
@JsonBackReference
@JoinColumn(name = "main_branch_id", nullable = false)
private MainBranch mainBranch;
@OneToMany(mappedBy = "subBranch")
@JsonManagedReference
private List<SubBranchRef> subBranchRef = new ArrayList<>();
}
public class SubBranchRef{
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "sub_branch_id", nullable = false)
@JsonBackReference
private SubBranch subBranch;
@Column(name = "ref_data", nullable = false, length = 200)
private String refData;
}
也许可以在
FetchType.LAZY
中使用 SubBranchRef
代替 SubBranch entity
:
通过将 FetchType 设置为 LAZY,当我们获取
SubBranchRef
时,不会加载 SubBranch
。
public class SubBranch{
...
@OneToMany(mappedBy = "subBranch", fetch = FetchType.LAZY)
@JsonManagedReference
private List<SubBranchRef> subBranchRef = new ArrayList<>();
...
}