두 개의 JPA 엔터티 (작업 및 작업)의 양방향 관계에서 중첩 루프로 인해 Jackson 오류가 발생했습니다. @JsonManagedReference 및 @JsonBackReference 주석을 사용하여이 문제를 해결하기 위해 부분적으로 연구를 시작했지만이 방법은 JSON 직렬화가 내 JobResource/JobResourceAssembler 및 TaskResource/TaskResourceAssembler 위로 점프하는 내 엔티티 내에서 주석을 사용할 때만 작동합니다. HATEOASless 및 HALless json 응답.리소스 및 리소스 어셈블러가있는 Spring HATEOAS/Jackson
내 리소스가이 직렬화/직렬화를 관리 할 수있는 방법이 있습니까?
일부 코드 (내가 JSON 응답을 가지고 있지만 HATEOASless 및 HALless되는 교환에 이런 식으로):
@Entity
public class Task {
@Id
@GeneratedValue
private Long id;
@OneToMany(mappedBy="task")
@JsonManagedReference
private List<Job> job = new ArrayList<Job>();
//constructors, getter, setter...
@Entity
public class Job {
@Id
@GeneratedValue
private Long id;
@ManyToOne
@JsonBackReference
@JoinColumn(name = "task_id", updatable = true, insertable = true, nullable = true)
private Task task;
//constructor, setter, getter.
HATEOASless 응답 (작업 연결이 있어야합니다)
{
"_embedded": {
"tasks": [
{
"name": "Task",
"description": "Task Description",
"createdAt": 1467583658749,
"updatedAt": null,
"deletedAt": null,
"isActive": true,
"estimatedStartDate": null,
"startDate": null,
"estimatedDateEnd": null,
"dateEnd": null,
"ids": 1,
"risk": null,
"job": [
{
"id": 2,
"name": "Job",
"description": "Job Description",
"createdAt": 1467583673859,
"updatedAt": null,
"deletedAt": null,
"isActive": true
},
{
"id": 3,
"name": "Job2",
"description": "Job Description",
"createdAt": 1467583676138,
"updatedAt": null,
"deletedAt": null,
"isActive": true
},
{
"id": 4,
"name": "Job3",
"description": "Job Description",
"createdAt": 1467583679339,
"updatedAt": null,
"deletedAt": null,
"isActive": true
}
],
"_links": {
"self": {
"href": "http://127.0.0.3:7890/api/v1/tasks/1"
},
"task": {
"href": "http://127.0.0.3:7890/api/v1/tasks/1"
}
}
}
]