【发布时间】:2019-12-09 00:31:21
【问题描述】:
我正在使用 Jersey(JAX-RS) 构建一个 Rest 应用程序。目前,我想避免子数据获取父数据列表。由于子数据很大,在获取所有列表数据父数据时会使程序变得非常缓慢。目前,我使用 FetchType.EAGER,因为如果使用 FetchType.LAZY,我不知道如何实现(错误是 LazyInitializationException)。
Pojo 结构;
class Parent {
..
@OneToMany(mappedBy = "parent", fetch = FetchType.EAGER, orphanRemoval="true")
private List<Child> listOfChildren;
..
}
class Child {
..
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "parentId")
private Parent parent;
..
}
在获取父数据列表时如何自定义忽略子数据,如下所示:
[
{
"id": "0001",
"name": "A",
"listOfChildren":[
// I want it is null because data is very big
]
},
{
"id": "0002",
"name": "B",
"listOfChildren":[
// I want it is null, because data is very big
]
},
..................
]
这样获取父节点的数据列表:
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
Query q = em.createQuery("Select p from Parent p", Parent.class);
List<Parent> parents = q.getResultList();
Return Response.ok(parents).build();
但是当我只得到一个父记录时,它可以得到孩子的完整数据,如下所示:
{
"id": "0001",
"name": "A",
"listOfChildren":[
{
"id": "01",
"imagebase64": "data1"
},
{
"id": "02",
"imagebase64": "data2"
}
]
},
我卡住了,希望大家能帮帮我。非常感谢。
【问题讨论】:
标签: java json hibernate jpa jax-rs