我想禁用实体@OneToMany中的提取

时间:2019-03-05 11:36:30

标签: hibernate spring-boot jpa spring-data-jpa

我有一个单向关联

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinColumn(name = "candidate_id", nullable=false)
    private List<Achievement> achievements= new ArrayList<Achievement>();

我想禁用获取功能,这样我可以在需要时获取 我不希望该分校为每个电话返回成就

3 个答案:

答案 0 :(得分:0)

如果在提取对象时我理解正确,那么您是否也希望从数据库中提取成就?如果是这种情况,则应使用此代码:

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinColumn(name = "candidate_id", nullable=false)
    private List<Achievement> achievements= new ArrayList<Achievement>();

惰性获取类型不会获取您的一对多关系,因此在这种情况下,如果您获取具有成就的对象,则不会从数据库获取成就。

答案 1 :(得分:0)

我通过创建一个新的DTO层AchievementsDto来解决该问题,该层映射了所请求的必要数据并将其作为响应发送。

答案 2 :(得分:-1)

您需要使用"com.fasterxml.jackson.annotation.JsonIgnoreProperties;"

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "candidate_id", nullable=false)
@JsonIgnoreProperties("achievements")
private List<Achievement> achievements= new ArrayList<Achievement>();