@JsonManagedReference 和 @JsonBackReference 无法从 jsonbackreference 模型获取关系数据

Riz*_*dik 6 spring jpa jackson spring-data-jpa spring-boot

我有用户和角色的关系,其中角色具有“一对多”关系,用户与“role_id”列具有“多对一”关系

当我在 Spring Boot 上使用关系时,当我使用 @OneToMany 和 @ManyToOne 时,我得到了无限循环数据,所以我搜索并得到 @JsonManagedReference 和 @JsonBackRefence。这解决了我的无限循环问题。

但是当我使用 @JsonManagedReference(对于角色)和 @JsonBackReference(对于用户)时,对于符合我想要的角色模型。就像这个截图:

在此输入图像描述

但在用户模型中,没有角色数据,就像这个截图 在此输入图像描述

我想要的是当我获得与我想要的相同的角色数据(1个屏幕截图)并且当我从用户那里获得数据时,我想要像这样的屏幕截图的数据: 在此输入图像描述

这是我的榜样:

public class Role {
/*
    another data
*/
   @JsonManagedReference(value = "user-role")
   @OneToMany(
           cascade = CascadeType.ALL,
           mappedBy = "role"
   )
   private List<User> users = new ArrayList<>();
}
Run Code Online (Sandbox Code Playgroud)

和我的用户模型:

public class User {
   /*
      another data
   */
   @JsonBackReference(value = "user-role")
   @ManyToOne
   @JoinColumn(name="role_id")
   @OnDelete(action = OnDeleteAction.CASCADE)
   private Role role;
}
Run Code Online (Sandbox Code Playgroud)

我在stackoverflow和其他网站上搜索了很多次,但没有找到任何解决方案,您能帮我解决我的问题吗,非常感谢。

Roh*_*hah 1

您似乎没有提供该值@JsonManagedReference

尝试这样做:

@JsonManagedReference(value = "user-role")
Run Code Online (Sandbox Code Playgroud)

@JsonBackReference(value = "user-role")
Run Code Online (Sandbox Code Playgroud)

准确指定应管理哪个引用。