我有一个使用jpa(2.1)和hibernate(5.3.6)的Web项目。我必须执行一些servlet,这些servlet必须保存和检索一些数据。 因此,如果我有两个班级:
public class Parent{
@Column(name="id")
private int id;
@Column(name="name")
private String name;
...
@OneToMany(orphanRemoval = true, mappedBy = "parent")
@Cascade({ CascadeType.ALL })
private List<Child> childs = new ArrayList<Child>();
}
和
public class Child{
@Column(name="id")
private int id;
@Column(name="name")
private String name;
...
@ManyToOne(fetch = FetchType.LAZY)
@Cascade({ CascadeType.ALL })
@JoinColumn(name = "parentId", foreignKey = @ForeignKey(name = "MyForeignKey"), nullable = true, updatable = true, insertable = true)
private Parent parent;
}
我有两种情况:
我需要让所有孩子都成为父母,但是在序列化时,我只想看到孩子的身份证,例如:
[{ “ id”:1, “ name”:“ parent1”, “儿童”:[{ “ id”:10 }, { “ id”:18 }] }]
无论哪个孩子,我都需要获取并查看所有属性,例如:
[{ “ id”:10, “名称”:“ child10” }]
我尝试在不同字段上使用 gson 库注释
@Expose(serialize="false", deserialize="true")
但是我不能实现两种行为(第一种情况和第二种情况),我得到还是:
父级->
[{
"id":1,
"name": "parent1"
}]
有单独的孩子->
[{
"id":10,
"name": "child10"
}]
或
父级->
[{
"id":1,
"name": "parent1",
"childs":[{
"id":10
},
{
"id":18
}]
}]
有单独的孩子->
[{
"id":10
}]
那么,您能帮我解决这个问题吗?是否可以像我想要的那样在单独的请求中同时实现案例1和案例2?
谢谢。