我有两个Java实体,它们之间有双向的OneToOne关系:“Sinistre”和“RapportTechnique”。当我生成JSON文件发送到前端时,我遇到了不需要的递归。## Heading ##
- 酒店SINISTRE,锡耶纳**
@Data
@Entity
@EqualsAndHashCode(callSuper = false)
@Table(name = "sinistre")
public class Sinistre extends Audit {
@Column
private String code;
@Column
private LocalDateTime dateIncident;
@Column
private double montantIndem;
@ManyToOne
@JoinColumn(name = "structure_id", referencedColumnName = "id")
private Structure structure;
@OneToOne(mappedBy = "sinistre")
@JsonManagedReference
private RapportTechnique rapportTechnique;
字符串
}类别RapportTechnique:
@Data
@Entity
@EqualsAndHashCode(callSuper = false)
@Table(name = "rapportTech")
public class RapportTechnique extends Audit {
@Column
private String reference;
@Column
private String nature_Sinistre;
@Column
private String causes_Sinistre;
@Column
private String date_intervention;
@OneToOne
@JoinColumn(name = "sinistre_id")
@JsonBackReference
private Sinistre sinistre;
型
}
我尝试了@JsonIgnore注解,但它完全忽略了JSON中的关系。我发现了@JsonManagedReference和@JsonBackReference注解,它们解决了递归问题,但只在一个方向上。当为'Sinistre'实体生成JSON文件时,如何在保持双向关系的同时避免递归,其中包含对'RapportTechnique'的引用,反之亦然?
2条答案
按热度按时间ocebsuys1#
你可以使用JsonIgnoreProperties:
字符串
和
型
dpiehjr42#
选择一个类作为主体类,并在辅助类中使用**@OneToOne(fetch = FetchType.LAZY)**annotation延迟地获取对象。这确保了关联对象的延迟加载,通过仅在需要时获取它来提高性能。