Я начал разработку Springboot REST API для грубых операций, и мне удалось завершить часть извлечения данных, однако у меня возникли проблемы с запросом POST.
У меня есть объект под названием Job
@Entity
@Table(name="JOB")
public class Job {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="JOB_ID")
private Long jobId;
@Column(name="JOB_CODE")
private String jobCode;
@Column(name="JOB_DESCRIPTION")
private String jobDescription;
@OneToMany(mappedBy="job")
@JsonManagedReference(value="tasks")
private List<JobTask> taskList = new ArrayList<>();
Обратите внимание, что я использовал аннотации @JsonManagedReference и @JsonBackReference, чтобы избежать ссылок на циклы.
Это мой дочерний элемент JobTask`
@Entity
@Table(name="JOB_TASK")
public class JobTask {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="JOB_TASK_ID")
private Long jobTaskId;
private String taskDescription;
@ManyToOne
@JoinColumn(name="JOB_ID")
@JsonBackReference(value="tasks")
private Job job;`
Затем я попробовал POST-запрос для создания задания с JSON ниже.
{
"jobCode": "QM",
"jobDescription": "Quaterly Maintenance",
"taskList": [
{
"taskDescription": "Quarter Engine Asess"
},
{
"taskDescription": "Quarter Break Asess"
}
]`
}
Однако теперь я получаю исключение ниже для запросов POST`
Не удалось оценить десериализацию Джексона для типа [[простой тип, класс com.abc.entity.Job]]: java.lang.IllegalArgumentException: невозможно обработать управляемую/обратную ссылку 'defaultReference': тип обратной ссылки (java.util.List) несовместим с управляемым типом (com.abc.entity.JobTask)`
Я провел поиск на этом сайте и нашел несколько рекомендаций по использованию @JsonIdentityInfo вместо аннотаций @JsonManagedReference/ @JsonBackReference. Но я не хочу использовать @JsonIdentityInfo, поскольку он возвращает значения идентификатора вместо полностью сериализованного объекта, когда я читаю данные с помощью запросов GET.
Любая помощь будет глубоко оценена
Спасибо, Кет