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을 비 직렬화하는 데 필요한 변경 사항은 무엇입니까?

+0

<조직> 조직;''개인 설정 <조직> 조직;' – Patrick

+0

@ 패트릭 List to Set을 변경했습니다. 여전히 같은 문제입니다. 참고로 매핑 테이블을 사용 중입니다. 그래서 데이터 유형에는 문제가 없습니다. – Krish

+0

@Krishna Dont는 간단한 일반적인 방법으로 그렇게 할 수 있다고 생각하지 않습니다. 아마도 https://stackoverflow.com/a/24684251/1032167을 시도하거나 사용자 정의 생성기를 구현할 수는 있지만 사용자 정의 serializer/deserializer를 읽고 이해하는 것이 훨씬 더 어려울 것이라고 생각합니다. – varren

답변

0

많은 시도 끝에 @JsonIgnoreProperties가 내 문제를 해결했습니다.

예 : "@JsonIgnoreProperties (allowSetters = TRUE, 값 = {"기업 "})"

당신이`개인 목록을 변경할 경우 발생하는