У меня есть несколько проблем с десериализацией следующего json:
{
children:[{name:"1c"},{name:"2c"},{name:"3c"}]
}
Мои классы будут выглядеть так:
@JsonIdentityInfo(scope=ParentObject.class,generator = ObjectIdGenerators.PropertyGenerator.class, property="id")
public class ParentObject {
int id;
@OneToMany(cascade = CascadeType.ALL,mappedBy="parent",orphanRemoval=true)
Set<Child> children;
}
@JsonIdentityInfo(scope=Child.class,generator = ObjectIdGenerators.PropertyGenerator.class, property="id")
public class Child {
int id;
String name;
@ManyToOne
ParentObject parent;
}
Имея это в виду, я бы хотел, чтобы Джексон автоматически установил ParentObject.
Структура, которую я даю, почти идеальна, за исключением того, что ParentObject не установлен. Это необходимо, так как Hibernate затем устанавливает идентификаторы родителя, а затем устанавливает идентификаторы детей на основе этого значения, которое равно нулю.
Первоначально я установил его с помощью JSONManagedReference и BackReference, но он однонаправлен и при запросе одного объекта родительский объект будет проигнорирован.
Как я могу заставить это работать? Благодарю! Том
Попробуйте использовать @jsonignore родителя @ManyToOne ParentObject;
Я думаю, что при десериализации это не будет учитывать и дать вам родительский объект.
С Уважением,
Прасад