วิธีสลับ @JsonBackReference และ @JsonManagedReference ตามเอนทิตีที่ถูกอ้างอิง

ฉันกำลังพยายามค้นหาวิธีสลับ @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 มันทำให้ฉันมีสิ่งปลูกสร้างทั้งหมดสำหรับไซต์ที่เชื่อมต่อกับสิ่งปลูกสร้างที่พบ


person Abu Sulaiman    schedule 08.12.2017    source แหล่งที่มา
comment
อย่าลืมยอมรับ/โหวตคำตอบที่ช่วยคุณ... ;)   -  person Cepr0    schedule 11.12.2017
comment
ขออภัย ต้องรอจนกว่าฉันจะสามารถทดสอบได้ในที่ทำงานจึงจะสามารถให้ข้อเสนอแนะที่เหมาะสมได้ ขอบคุณอีกครั้ง!   -  person Abu Sulaiman    schedule 11.12.2017


คำตอบ (1)


หากฉันเข้าใจคุณถูกต้อง คำอธิบายประกอบ @JsonIgnoreProperties น่าจะช่วยคุณได้:

@JsonIgnoreProperties("site")
@OneToMany(mappedBy="site")
private List<Building> buildings;

@JsonIgnoreProperties("buildings")
@ManyToOne
private Site site;
person Cepr0    schedule 08.12.2017
comment
ใช่แล้ว นี่คือสิ่งที่ฉันต้องการจริงๆ ฉันเห็นคำอธิบายประกอบมาก่อน แต่ไม่รู้ว่ามันทำงานอย่างไร จริงๆ แล้วฉันคิดว่ามันจะไม่สนใจอาคารและสถานที่ตลอดเวลา ขอบคุณมาก! - person Abu Sulaiman; 11.12.2017