在“一对多映射”方案中,对子实体执行findById操作将返回递归子实体。需要解决方案

时间:2019-04-22 15:30:45

标签: java spring hibernate spring-boot jpa

我有2个实体。 JobOfferEntity和JobApplicationEntity。 JobOfferEntity与JobApplicationEntity具有一对多映射。以下是实体:-

public class JobOfferEntity {

@JsonManagedReference
    @OneToMany(mappedBy = "relatedJobOffer",fetch = FetchType.LAZY)
    private List<JobApplicationEntity> jobApplications = new ArrayList<>();

}

public class JobApplicationEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "app_id")
    private long applicationId;

@JsonBackReference
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "JOB_OFFER",updatable = false)
    private JobOfferEntity relatedJobOffer;
}

我正在尝试根据applicationId获取工作申请;

JobApplicationEntity jobApplicationEntity = this.jobApplnRepo.findById(appId).orElseThrow(() -> new DataNotFoundException(""));

但是此操作返回了作业应用程序实体,但是问题在于它返回了子实体JobOfferEntity以及递归地嵌入到Job Offer实体内部的作业合并实体。请在下面找到json

{
    "jobId": 0,
    "applicationId": 1,
    "candidateEmail": "Lalit.mishra@gmail.com",
    "resumeTxt": "Sample resume",
    "applicationStatus": "APPLIED",
    "relatedJobOffer": {
        "jobId": 1,
        "jobTitle": "Amruta  dev",
        "jobDesc": "Sample C++ scientist",
        "contactPerson": "Basho",
        "createdDate": "2019-03-03",
        "modifiedDate": "2019-03-03",
        "jobOfferStatus": "ACTIVE",
        "jobApplications": [
            {
                "applicationId": 1,
                "candidateEmail": "Lalit.mishra@gmail.com",
                "resumeTxt": "Sample resume",
                "applicationStatus": "APPLIED"
            }
        ]
    }
}

如上所述,我只需要相关的工作机会,但我不想再次递归在相关工作机会中使用相关的工作机会。

您能推荐我任何解决方案吗?

1 个答案:

答案 0 :(得分:0)

如果您不需要(从客户端)从JobEntity获取相关的JobApplicationEntity,则可以使用@JsonIgnore对该字段进行注释

public class JobOfferEntity {

    @JsonIgnore
    @OneToMany(mappedBy = "relatedJobOffer",fetch = FetchType.LAZY)
    private List<JobApplicationEntity> jobApplications = new ArrayList<>();

}

来源:https://fasterxml.github.io/jackson-annotations/javadoc/2.5/com/fasterxml/jackson/annotation/JsonIgnore.html