json - 一对多情况下的Json实体序列化;选择性子字段序列化
问题描述
我有 jpa(2.1) 和 hibernate(5.3.6) 的 web 项目。我必须做一些必须保存和检索一些数据的 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,比如:
[{ "id":1, "name": "parent1", "childs":[{ "id":10 }, { "id":18 }] }]
无论是哪个孩子,我都需要查看所有属性,例如:
[{ "id":10, "name": "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?
谢谢你。
解决方案
推荐阅读
- c++ - 不调用移动 ctor
- list - 如何从包含 Dart 列表的地图列表中访问值?
- arrays - 如何使用 useState 正确更新功能性 React 中的数组
- java - 如何在 Spring 中使用 @PropertySource 加载不同的 xml 文件
- python - 导入 pytesseract 时收到“ModuleNotFoundError”
- firebase - 如何从 Flutter 编辑 Firestore 中的数据类型(地图)
- python - 更新框架对象中的 tkinter 标签
- sql - Postgresql-HLL 计数缓慢
- java - 使用 Apache Tika 运行 mvn clean package 时超出 GC 开销限制
- c - 在 C 中输出以 10 为底的定点数