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

时间:2015-08-05 21:34:37

标签: spring maven jackson fasterxml

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

例如,“支付”(=国家)与OneToMany的“部门”(部门)有关(一个支付多个部门)

这是我的实体:

@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()” - 它会产生一个无限循环,试图调用“Pays”的“Departements”和每个“Pays”部门“等等......

对于这个例子,我不需要“支付”的“部门”,所以我可以使用@JsonIgnore,但我不想,因为对于其他电话,我将需要“支付”一个“部门”

对于这个例子,有没有人有解决方案来获取和序列化我的对象“Pays”的“id”和“nom”?

仅供参考,这是我的实体“Departement”的样本:

@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
}

非常感谢

1 个答案:

答案 0 :(得分:0)

看看:Infinite Recursion with Jackson JSON and Hibernate JPA issue

您的问题已通过上述链接进行了描述和解决。