Spring JPA 具有嵌套关系,但只需要 1 个深度关系

问题描述 投票:0回答:1

我为

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;

}
java spring spring-boot jpa spring-data-jpa
1个回答
1
投票

也许可以在

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<>();
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.