我有以下實體:- 傑克遜與自我參照序列化實體
@Entity
@Table(name = "registry_entry")
@JsonIgnoreProperties(ignoreUnknown = true)
public class RegistryEntry extends GenericEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(unique = true, nullable = false)
@JsonProperty("id")
protected Long id;
...
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "srv_registry_entry_related_dependence",
joinColumns = @JoinColumn(name = "id_reg_entry", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "id_related_reg_entry", referencedColumnName = "id"))
@JsonProperty
private List<RegistryEntry> relatedRegistryEntries;
...
}
假設我們有實體A
和B
其中B.relatedRegistryEntries
包含A
和A.relatedRegistryEntries
包含B
。
當我嘗試序列化A
或B
時,我得到StackOverflowError
。我怎樣才能在此列表中序列化唯一的ID?
也許你可以使用'@JsonIdentityInfo(發電機= ObjectIdGenerators.IntSequenceGenerator.class,財產=「ID 「)'在你的課堂上方。或者你可以在自己的List類上面編寫自定義序列化程序,並使用它'@JsonDeserialize(using = CustomDeserializer.class)'和'@ JsonSerialize'註釋列表 – varren