我使用Jackson將我的JPA模型序列化爲JSON。使用jackson將雙向JPA實體序列化爲JSON
我有以下類別:
import com.fasterxml.jackson.annotation.*;
import javax.persistence.*;
import java.util.Set;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class)
@Entity
public class Parent {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@JsonManagedReference
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Set<Child> children;
//Getters and setters
}
和
import com.fasterxml.jackson.annotation.*;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class)
@Entity
public class Child {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@JsonBackReference
@ManyToOne
@JoinColumn(name = "parentId")
private Parent parent;
//Getters and setters
}
我使用POJO映射序列化從模型到JSON。當我序列化父對象,我得到以下JSON:
{
"id": 1,
"name": "John Doe",
"children": [
{
"id": 1,
"name": "child1"
},{
"id": 2,
"name": "child2"
}
]
}
但是,當我序列化一個孩子,我得到下面的JSON:
{
"id": 1,
"name": "child1"
}
父參考丟失。 有沒有辦法解決這個問題?
包含UI相關邏輯,例如json註釋在實體中是不是很糟糕?它不是在殺死模塊化嗎? – faisalbhagat
呃...不。這就是實體存在的主要原因:作爲數據模型表示,無論是JPA,XML,JSON,還是其組合。讓您的整個應用程序使用單個實體集合是設計良好的應用程序的指標 - 一組實體會導致單點故障,從而使應用程序可維護(並可交換)的程度更高。 – specializt