我遇到了一个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
}
非常感谢
答案 0 :(得分:0)
看看:Infinite Recursion with Jackson JSON and Hibernate JPA issue
您的问题已通过上述链接进行了描述和解决。