Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
如何使用JPA中的嵌套JSON获得OnetoMany结果_Json_Hibernate_Spring Mvc_Jpa - Fatal编程技术网

如何使用JPA中的嵌套JSON获得OnetoMany结果

如何使用JPA中的嵌套JSON获得OnetoMany结果,json,hibernate,spring-mvc,jpa,Json,Hibernate,Spring Mvc,Jpa,我有2个POJO,如下所示: UserDto @Id @Column(name = "c_um_npk_id", nullable = false) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_sequence") @SequenceGenerator(name = "user_sequence", sequenceName = "t_user_master_c_um_

我有2个POJO,如下所示:

UserDto

    @Id
    @Column(name = "c_um_npk_id", nullable = false)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_sequence")
    @SequenceGenerator(name = "user_sequence", sequenceName = "t_user_master_c_um_npk_id_seq", initialValue = 1, allocationSize = 1)
    private Long id;
    @Column(name = "c_um_vnm_username", nullable = false)
    private String username;
    @JsonManagedReference("user-role")
    @OneToMany(mappedBy = "userDto", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private List<RoleDto> roleDtos;

/* other fields are omitted for simplicity */
    @Id
    @SequenceGenerator(name = "role_sequence", sequenceName = "t_user_roles_c_ur_npk_role_id_seq", initialValue = 1, allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "role_sequence")
    @Column(name = "c_ur_npk_role_id", nullable = false)
    private Long Id;
    @JsonBackReference("user-role")
    @ManyToOne
    @JoinColumn(name = "c_ur_nfk_user_id")
    private UserDto userDto;
    @Column(name = "c_ur_vnm_role")
    String role;
/**省略getter setter**/

现在,我试着用JPA

entityManager.createQuery("SELECT ud.id,ud.username,roles.role from UserDto ud JOIN ud.roleDtos roles WHERE ud.username = :username")
                .setParameter("username", userName).getResultList();
在这里,我需要一个结果低于预期的结果

{
   id : 1,
   username : abc123,
   roleDtos :[
      {
         role : 'SUPER_ADMIN'
      },{
         role : 'SUPPORT_PERSON'
      }
   ]
}
但我并没有得到带有JPA结果的嵌套对象,也没有像DB一样得到许多行

1. id : 1, 
   username : abc123
   role : SUPER_ADMIN

2. id : 1,
   username : abc123
   role : SUPPORT_PERSON

我错过了JPA吗?请先帮我谢谢。

JPA不创建JSON。JPA将对象持久化到数据库,并检索它们。。。作为Java对象。然后,您必须使用JSON序列化器来创建JSON。是否有我可以引用的链接?引用什么?您需要定义问题所在。。。将java对象从数据库中取出,或转换为JSON。Internet搜索提供了您应该需要的所有引用FetchMode Join可以帮助您。
@manytone(fetch=FetchType.LAZY)@fetch(FetchMode.Join)@JoinColumn(name=“STOCK\u ID”,nullable=false)public STOCK getStock(){return this.STOCK;}