0
我有兩個在數據庫中有關係的JPA註釋類。我使用Jersey來公開REST api。使用關係的ID與Jackson反序列化JPA關係
//package and imports
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@Entity
public class Parent {
@Id
@GeneratedValue
private Long id;
private String name;
//Getters and setters
}
//package and imports
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@Entity
public class Child {
@Id
@GeneratedValue
private Long id;
private String name;
@ManyToOne
private Parent parent;
//Getters and setters
}
當我在http://localhost/children
執行GET
請求,我得到以下JSON:
[{
"id": 1,
"name": "child1",
"parent": {
"id": 1,
"name": "parent"
}
}, {
"id": 2,
"name": "child2",
"parent": {
"id": 1,
"name": "parent"
}
}]
這是利用傑克遜序列化JSON數據庫模型。
當我執行POST
請求http://localhost/children
使用以下有效載荷增加一個孩子:
{
"name": "child3",
"parent": {
"id": 1
}
}
孩子被持久化到數據庫,但有父母名字null
值。我看到這個的時候我就http://localhost/children
[{
"id": 1,
"name": "child1",
"parent": {
"id": 1,
"name": "parent"
}
}, {
"id": 2,
"name": "child2",
"parent": {
"id": 1,
"name": "parent"
}
}, {
"id": 3,
"name": "child3",
"parent": {
"id": 1
}
}]
執行另一個GET
我用了@JsonIdentityInfo/@JsonIdentityReference
方法,但這並不解決問題。我不想將整個Parent對象作爲json加入我的POST
請求中,以添加一個子對象,但只想使用Parent ID。有什麼想法嗎?