Java 如何根据引用的实体交换@JsonBackReference和@JsonManagedReference

Java 如何根据引用的实体交换@JsonBackReference和@JsonManagedReference,java,spring,jackson,spring-data-jpa,Java,Spring,Jackson,Spring Data Jpa,我试图找到一种方法,根据我从相关存储库引用的实体来交换@JsonBackRefence和@JsonManagedReference Site.java @Entity @Table(name = "Site") public class Site { @Id private String id; @OneToMany(mappedBy="site") @JsonManagedReference private List<Building>

我试图找到一种方法,根据我从相关存储库引用的实体来交换@JsonBackRefence和@JsonManagedReference

Site.java

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

    @Id
    private String id;

    @OneToMany(mappedBy="site")
    @JsonManagedReference
    private List<Building> buildings;
}
@Entity
@Table(name = "building")
public class Building{

    @Id
    private String id;

    @ManyToOne
    @JoinColumn(name = "SITE_ID")
    @JsonBackReference
    private Site site;
}
public List<Site> findAll(); //Works as intended
public Building findById(buildingId); //Works if references are swapped
SiteRepository.java

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

    @Id
    private String id;

    @OneToMany(mappedBy="site")
    @JsonManagedReference
    private List<Building> buildings;
}
@Entity
@Table(name = "building")
public class Building{

    @Id
    private String id;

    @ManyToOne
    @JoinColumn(name = "SITE_ID")
    @JsonBackReference
    private Site site;
}
public List<Site> findAll(); //Works as intended
public Building findById(buildingId); //Works if references are swapped
但是,在调用findById(buildingId)时,我希望交换@JsonBackReference。因此,@JsonBackReference位于Site.java中,@JsonManagedReference位于Building.java实体中


注意:@JsonIdentityInfo几乎可以处理它,但它给了我太多的信息,即:当我从BuildingRepository调用findById(buildingId)时,它会给我找到的建筑所连接的站点的所有建筑。

如果我理解正确,则
@JsonIgnoreProperties
注释应该可以帮助您:

@JsonIgnoreProperties(“站点”)
@OneToMany(mappedBy=“站点”)
私人楼宇名单;
@JsonIgnoreProperties(“建筑物”)
@许多酮
私人地盘;

别忘了接受/投票选出对你有帮助的答案…;)抱歉,我不得不等到我能够在工作中测试它,这样我才能给出正确的反馈。再次感谢!是的,这正是我需要的。我以前看过注释,但不知道它是如何工作的。事实上,我认为它会忽略所有的建筑物和现场关闭的时间。非常感谢!