Объяснение
Я сделал пример кода для тестирования методов http, к моему удивлению, я обнаружил проблему при попытке преобразовать JSON в объект в полях списка, он вылетел , но как только я удаляю это поле, все работает нормально.
Пример структуры (пропущенные поля, такие как id для этого примера)
{
"name": "One",
"child": {
"name": "Two",
"nested": [
{
"name": "Three"
}
]
}
}
Ожидается
Возможность POST и PUT , ошибка выдается на данный момент.
Actual
Я получаю сообщение об ошибке, но как только я удаляю это поле Nested , все работает нормально, также GET и DELETE работают нормально, даже если там есть поле Nested .
Выдается ошибка
Не удалось оценить десериализацию Джексона для типа [[простой тип, класс com.base.project.Parent ]]: com.faster xml .jackson.databind.ex c .InvalidDefinitionException: Cannot hand Управляемая / обратная ссылка 'defaultReference': тип обратной ссылки (java .util.List ) не совместим с управляемым типом ( com.base.project.Child )
Я собираюсь пропустить некоторые поля, чтобы это не стало кластером
class Parent ( верхний слой, имеет имя One в структуре, показанной сверху)
@JsonManagedReference // I already tried removing this
@OneToOne(mappedBy = "parent", cascade {...})
private Child child;
класс Child (средний слой, имеет имя Два в структуре, показанной вверху)
@JsonBackReference
@OneToOne(cascade = {...})
@JoinColumn(name = "parent_id")
private Parent parent;
@JsonManagedReference // I already tried removing this
@ManyToMany(mappedBy = "child", cascade = {...})
private List<Nested> nested;
класс Nested (нижний слой, имеет название Три в структуре, показанной вверху)
@JsonBackReference
@ManyToMany(cascade = {...})
@JoinTable(...)
private List<Child> child;
То, что я пробовал
- Удаление @ JsonManagedReference
- Добавлено @JsonIdentityInfo к трем классам
- Использование @JsonProperty для реляционных полей
- Удаление поля Nested (@ManyToMany), только тогда это работает штраф