Java 如何在JAX-RS中定制关系OneToMany的JSON输出
我正在使用Jersey(JAX-RS)构建一个Rest应用程序。目前,我希望避免使用子数据来获取父数据列表。由于数据子级非常大,因此在获取所有列表数据父级时,程序将非常缓慢。目前,我使用FetchType.EAGER,因为如果使用FetchType.LAZY,我不知道如何实现(错误是LazyInitializationException) Pojo结构Java 如何在JAX-RS中定制关系OneToMany的JSON输出,java,json,hibernate,jpa,jax-rs,Java,Json,Hibernate,Jpa,Jax Rs,我正在使用Jersey(JAX-RS)构建一个Rest应用程序。目前,我希望避免使用子数据来获取父数据列表。由于数据子级非常大,因此在获取所有列表数据父级时,程序将非常缓慢。目前,我使用FetchType.EAGER,因为如果使用FetchType.LAZY,我不知道如何实现(错误是LazyInitializationException) Pojo结构 class Parent { .. @OneToMany(mappedBy = "parent", fetch = Fetch
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;
..
}
按如下方式获取父级的数据列表:
@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();
我被困住了,我希望每个人都能帮助我。非常感谢。返回实体对象不是一种好的做法,因此您应该创建“info”对象,只用于返回响应。要忽略字段,请查找@JsonIgnore注释
@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"
}
]
},