Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JAX-RS中定制关系OneToMany的JSON输出_Java_Json_Hibernate_Jpa_Jax Rs - Fatal编程技术网

Java 如何在JAX-RS中定制关系OneToMany的JSON输出

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

我正在使用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;
    ..
    }
按如下方式获取父级的数据列表:

@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"
           }
         ]
    },