Я пытаюсь найти способ поменять местами @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 почти справляется с этим, но дает мне слишком много информации, например: когда я вызываю findById(buildingId) из BuildingRepository, он дает мне все здания для сайта, присоединенного к найденному зданию.