JsonView注释(fasterxml.jackson)显示实体的所有字段



我在一个maven Spring项目中遇到了一个问题,这个项目是从Springboot开始的。我的问题是当我调用一个控制器的方法时,它返回一些我不想要的字段。

例如,"Pays" (=country)与带有OneToMany的" Department " (Department)相关(one Pays got many departments)

这是我的实体:

@Entity
@Table(name = "pays")
public class Pays {
    public interface DefaultView {}
    @Id
    @JsonView(DefaultView.class)
    private Long id;
    @JsonView(DefaultView.class)
    private String nom;
    @OneToMany(mappedBy = "pays")
    private List<Departement> departements;
    public Pays(Long id, String nom) {
        this.id = id;
        this.nom = nom;
    }
    public Pays() {
    }
    public Long getId() {
        return id;
    }
    public String getNom() {
        return nom;
    }
    public List<Departement> getDepartements() {
        return departements;
    }
    public void setNom(String nom) {
        this.nom = nom;
    }
    public void setDepartements(List<Departement> departements) {
        this.departements = departements;
    }
}

和这个控制器:

@RestController
@RequestMapping(value = "/ws/pays")
public class PaysController {
    @Autowired
    private PaysService paysService;
        @RequestMapping("/default")
        @JsonView(Pays.DefaultView.class)
        public List<Pays> getPayss() {
            return paysService.findAll();
        }
}

每次我去/ws/pays/default -并调用"getPayss()"-,它做了一个无限循环,试图调用"支付"的"部门",以及每个"部门"的"支付",等等…

对于这个例子,我不需要"支付"的"部门",所以我可以使用@JsonIgnore,但我不想这样做,因为对于其他调用,我将需要"部门"的"支付"

有没有人有一个解决方案来获取和序列化我的对象"支付"的"id"one_answers"nom"对于这个例子?

仅供参考,以下是我的实体"部门"的示例:

@Entity
@Table(name = "departement")
public class Departement {
    @Id
    private Long id;
    private String nom;
    private String code;
    private String soundex;
    @ManyToOne
    @JoinColumn(name = "id_pays")
    private Pays pays;
    //Getters and setters are properly declared, but not shown here to preserve space
}

Thanks to lot

看一下:无限递归与Jackson JSON和Hibernate JPA问题

你的问题已经用上面的链接描述并解决了

最新更新