私は、次のエンティティがありますジャクソン - 自己参照してエンティティをシリアライズ
@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;
...
}
たちはB.relatedRegistryEntries
はA
が含まれており、A.relatedRegistryEntries
はB
が含まれているエンティティA
とB
を持っていると仮定します。
A
またはB
をシリアル化しようとすると、私はStackOverflowError
となります。このリストのidだけをどのようにシリアル化できますか?
は、おそらくあなたは '@JsonIdentityInfo(発電機= ObjectIdGenerators.IntSequenceGenerator.classを使用することができ、プロパティ=「ID:
より普遍的に互換性のあるアプローチは、自己参照フィールドなしで自己参照オブジェクトをシリアル化することです")'あなたのクラスの上に。または、Listクラスの上にカスタムシリアライザを記述し、 '@JsonDeserialize(using = CustomDeserializer.class)'と '@ JsonSerialize'を使ってリストに注釈を付けることができます – varren