我在一个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问题
你的问题已经用上面的链接描述并解决了