Java 使用Spring引导的RESTful API中的循环依赖关系

Java 使用Spring引导的RESTful API中的循环依赖关系,java,hibernate,rest,api,spring-boot,Java,Hibernate,Rest,Api,Spring Boot,我正在使用SpringBoot、JPA以及Hibernate和Maven作为存储库管理器开发RESTAPI。在我的模型中,我有一个类俱乐部: @实体 @表(name=“俱乐部”) 公共班级俱乐部{ /** *身份证 */ @身份证 @GeneratedValue(策略=GenerationType.AUTO) 私人长id; /** *阿图尔·特尼科·杜克鲁贝。 */ @OneTONE(mappedBy=“实际润滑”) 私家车; //奥特罗斯·阿特里布托斯,盖特·塞特 }创建自己的DTO()可以

我正在使用SpringBoot、JPA以及Hibernate和Maven作为存储库管理器开发RESTAPI。在我的模型中,我有一个类
俱乐部

@实体
@表(name=“俱乐部”)
公共班级俱乐部{
/**
*身份证
*/
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
/**
*阿图尔·特尼科·杜克鲁贝。
*/
@OneTONE(mappedBy=“实际润滑”)
私家车;
//奥特罗斯·阿特里布托斯,盖特·塞特

}
创建自己的DTO()可以解决此问题

数据传输对象(DTO)是一种Java结构,创建它只是为了组织数据以便传输到另一个系统。它是根据需要创建的,没有无关或私人信息,也没有循环引用

例如:

private Map<String, Object> makeClubDTO(Club club) {
  Map<String, Object> dto = new LinkedHashMap<String, Object>();
  dto.put("id", club.getId());
  dto.put("coach", club.getCoach().getId());
  return dto;
}
私人地图makeClubDTO(俱乐部){
Map dto=newlinkedhashmap();
dto.put(“id”,club.getId());
dto.put(“coach”,club.getCoach().getId());
返回dto;
}

@JsonIgnoreProperties

如下

// Employee entity, owning side of relationship 
@ManyToOne(cascade = CascadeType.ALL)
@JsonIgnoreProperties("employee")
private Department department;

// Department side, inverse side of relationship
@OneToMany(mappedBy = "department")
@JsonIgnoreProperties("department")
private Collection<Employee> employee;
//员工实体,关系的拥有方
@多通(级联=级联类型.ALL)
@JsonIgnoreProperties(“员工”)
私人部门,;
//部门方面,关系的反面
@OneToMany(mappedBy=“部门”)
@JsonIgnoreProperties(“部门”)
私人收款员工;

第二种方法类似于Spotify Web API。每个相册都有一个指向其曲目的href链接。就这种情况而言,这与我有关:要解析循环引用,您应该断开两个对象的链接。您可以看到注释JsonManagedReference和JsonBackReference。它适合我。听起来是个好主意。仅供参考:。