首页 > 解决方案 > @JsonManagedReference 和 @JsonBackReference 无法从 jsonbackreference 模型中获取关系数据

问题描述

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

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

但是当我使用@JsonManagedReference(用于角色)和@JsonBackRefence(用于用户)时,可以使用我想要的角色模型。像这样的截图:

在此处输入图像描述

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

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

这是我的榜样:

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

和我的用户模型:

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

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

标签: springspring-bootjpaspring-data-jpajackson

解决方案


您需要以其他方式添加注释

@JsonManagedReference(for User) and @JsonBackRefence(for Role)

总之,@JsonBackRefence将忽略被添加。

您可以参考this以获取更多详细信息

或者在此处查看包含不同用例的演示。


推荐阅读