ฉันกำลังพยายามค้นหาวิธีสลับ @JsonBackRefence และ @JsonManagedReference ตามเอนทิตีที่ฉันอ้างอิงจากที่เก็บที่เกี่ยวข้อง
ไซต์.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 เกือบจะจัดการได้ แต่มันให้ข้อมูลฉันมากเกินไป เช่น: เมื่อฉันเรียก findById(buildingId) จาก BuildingRepository มันทำให้ฉันมีสิ่งปลูกสร้างทั้งหมดสำหรับไซต์ที่เชื่อมต่อกับสิ่งปลูกสร้างที่พบ