Я использовал jackson JsonIdentityInfo для обработки ссылки рекурсивного объекта в spring mvc. Я столкнулся с одной проблемой, то есть не смог десериализовать Json, который содержит 2 объекта с одинаковым идентификатором.
{
"organizations": [
{
"organizationId": 1,
"organizationName": "org1",
"enterprise": {
"enterpriseId": 1,
"enterpriseName": "ent1",
"organizations": null
}
},
{
"organizationId": 2,
"organizationName": "org2",
"enterprise": 1
}
]
}
если вы видите выше, обе организации сопоставляются с предприятием "1". Для первой организации это объект всего предприятия, но для организации 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;
...
}
Я искал google и SO, но не повезло.
Каковы изменения, необходимые для десериализации Json, которые содержат 2 объекта с одинаковым идентификатором?