我正在尝试根据我从相关存储库中引用的实体来找到交换@JsonBackRefence和@JsonManagedReference的方法。
Site.java
@Entity
@Table(name = "Site")
public class Site {
@Id
private String id;
@OneToMany(mappedBy="site")
@JsonManagedReference
private List<Building> buildings;
}
Building.java
@Entity
@Table(name = "building")
public class Building{
@Id
private String id;
@ManyToOne
@JoinColumn(name = "SITE_ID")
@JsonBackReference
private Site site;
}
SiteRepository.java
public List<Site> findAll(); //Works as intended
BuildingRepository.java
public Building findById(buildingId); //Works if references are swapped
但是在调用findById(buildingId)时,我希望交换@JsonBackReference。因此,@ JsonBackReference位于Site.java中,@ JsonManagedReference位于Building.java实体中。
注意: @JsonIdentityInfo 几乎可以处理它,但它给了我太多信息,即:当我从BuildingRepository调用findById(buildingId)时,它为我提供了连接到建筑物的站点的所有建筑物找到。
答案 0 :(得分:1)
如果我理解正确,@JsonIgnoreProperties
注释可以帮助您:
@JsonIgnoreProperties("site")
@OneToMany(mappedBy="site")
private List<Building> buildings;
@JsonIgnoreProperties("buildings")
@ManyToOne
private Site site;