私のJPAエンティティ(タスクとジョブ)の2つの双方向関係でネストされたループが原因で、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"
}
}
}
]