我从 Springboot 开始的 Maven Spring 项目遇到了问题。我的问题是当我调用控制器的方法时,它会返回一些我不想要的字段。
例如,“Pays”(=country)与“Departement”(部门)具有 OneToMany(一个 Pays got many Departements)相关
这是我的实体:
@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”,以及每个“Departement”的“Pays”,等等...
对于这个例子,我不需要“Pays”的“Departements”,所以我可以使用@JsonIgnore,但我不想这样做,因为对于其他调用,我需要“Departement”的“Pays” "
对于此示例,是否有人有解决方案来仅获取和序列化我的对象“Pays”的“id”和“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
}
非常感谢