Cara menukar @JsonBackReference dan @JsonManagedReference berdasarkan Entitas mana yang menjadi referensi

Saya mencoba mencari cara untuk menukar @JsonBackRefence dan @JsonManagedReference berdasarkan entitas yang saya referensikan dari repositori terkait.

Situs.java

@Entity
@Table(name = "Site")
public class Site {

    @Id
    private String id;

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

Bangunan.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

Namun saat memanggil findById(buildingId), saya ingin @JsonBackReference ditukar. Oleh karena itu, @JsonBackReference ada di Site.java dan @JsonManagedReference ada di entitas Building.java.

Catatan: @JsonIdentityInfo hampir menanganinya, tetapi ini memberi saya terlalu banyak informasi, yaitu: ketika saya memanggil findById(buildingId) dari BuildingRepository, ia memberi saya semua bangunan untuk situs yang digabungkan dengan bangunan yang ditemukan.


person Abu Sulaiman    schedule 08.12.2017    source sumber
comment
Jangan lupa untuk menerima/meningkatkan jawaban yang membantu Anda... ;)   -  person Cepr0    schedule 11.12.2017
comment
Maaf, harus menunggu sampai saya bisa mengujinya di tempat kerja agar saya bisa memberikan masukan yang tepat. Terima kasih lagi!   -  person Abu Sulaiman    schedule 11.12.2017


Jawaban (1)


Jika saya memahami Anda dengan benar, anotasi @JsonIgnoreProperties akan membantu Anda:

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

@JsonIgnoreProperties("buildings")
@ManyToOne
private Site site;
person Cepr0    schedule 08.12.2017
comment
Ya, inilah yang saya butuhkan. Saya melihat anotasi sebelumnya tetapi tidak tahu cara kerjanya. Saya sebenarnya berpikir itu akan mengabaikan bangunan dan lokasi sepanjang waktu. Terima kasih banyak! - person Abu Sulaiman; 11.12.2017