0
저는 spring mvc에서 재귀 객체 참조를 처리하기 위해 jackson JsonIdentityInfo를 사용했습니다. 동일한 ID로 2 개의 개체가 포함 된 Json을 deserialize 할 수 없습니다.jackson을 사용하여 동일한 ID를 가진 두 객체를 포함하는 Json을 비 직렬화 할 수 없습니다.
{
"organizations": [
{
"organizationId": 1,
"organizationName": "org1",
"enterprise": {
"enterpriseId": 1,
"enterpriseName": "ent1",
"organizations": null
}
},
{
"organizationId": 2,
"organizationName": "org2",
"enterprise": 1
}
]
}
위에서 볼 수있는 경우 두 조직 모두 엔터프라이즈 "1"로 매핑됩니다. 첫 번째 조직의 경우 전체 엔터프라이즈 개체이지만 조직 2의 경우 ID 만 제공합니다. 조직 2의 전체 개체를 가져와야합니다.
내 POJO 선언 :
@Entity
@Table(name = "organization")
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "organizationId")
public class Organization implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "organization_id")
private Long organizationId;
...
@ManyToOne
@JoinTable(name = "enterprise_organization", joinColumns = {
@JoinColumn(name = "organization_id") }, inverseJoinColumns = { @JoinColumn(name = "enterprise_id") })
private Enterprise enterprise;
...
}
@Entity
@Table(name = "enterprise")
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "enterpriseId")
public class Enterprise extends BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "enterprise_id")
private Long enterpriseId;
...
@OneToMany(mappedBy = "enterprise")
private List<Organization> organizations;
...
}
나는 구글과 SO하지만 행운을 검색.
ID가 같은 두 객체를 포함하는 Json을 비 직렬화하는 데 필요한 변경 사항은 무엇입니까?
<조직> 조직;''개인 설정 <조직> 조직;' – Patrick
@ 패트릭 List to Set을 변경했습니다. 여전히 같은 문제입니다. 참고로 매핑 테이블을 사용 중입니다. 그래서 데이터 유형에는 문제가 없습니다. – Krish
@Krishna Dont는 간단한 일반적인 방법으로 그렇게 할 수 있다고 생각하지 않습니다. 아마도 https://stackoverflow.com/a/24684251/1032167을 시도하거나 사용자 정의 생성기를 구현할 수는 있지만 사용자 정의 serializer/deserializer를 읽고 이해하는 것이 훨씬 더 어려울 것이라고 생각합니다. – varren