java - Spring Boot JPA 多对多关系。得到意想不到的回应
问题描述
我有两个实体用户和组,两个实体之间的关系是多对多的。当我打电话view-group/groupName
时,我得到了预期的组用户列表。但是当我打电话时view-user/userEmail
,我没有得到包含用户所属用户详细信息的组列表。
组.java
@Entity
@Table(name = "group_")
public class Group {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
private String groupName;
@ManyToMany
@JoinTable(name = "group_user",
joinColumns = { @JoinColumn(name = "group_id") },
inverseJoinColumns = {@JoinColumn(name = "user_id") })
public Set<User> usersOfgroup = new HashSet<>();
public Group() {
}
}
用户.java
@Entity
@Table(name="users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
@Column(name="name")
private String name;
@NotBlank
@Column(name="email")
private String email;
@JsonIgnore
@ManyToMany(mappedBy = "usersOfgroup")
public Set<Group> memberInGroups =new HashSet<>();
public User() {
}
本地主机:8080/view-group/groupName
{
"id": 1,
"groupName": "Group1",
"usersOfgroup": [
{
"id": 2,
"name": "Abhishek",
"email": "Abhishek@abc.com",
}
]
}
本地主机:8080/view-user/Abhishek@abc.com
{
"id": 2,
"name": "Abhishek",
"email": "Abhishek@abc.com",
}
预期响应:
{
"id": 2,
"name": "Abhishek",
"email": "Abhishek@abc.com",
"memberInGroups":[
{
"id": 1,
"groupName": "Group1",
}
]
}
解决方案
您已添加@JsonIgnore
,public Set<Group> memberInGroups =new HashSet<>();
这就是 json 响应没有此数据的原因。删除注释,您将看到预期的响应
@JsonIgnore
注解用于忽略序列化和反序列化中使用的逻辑属性。
推荐阅读
- html - 为什么我的 ngIf 条件函数不起作用?
- reactjs - 使用 React.js 和 Firebse 准确地增加和分配订单号(电子商务)
- ruby-on-rails - 如何在 Rails 中使用插入所有方法,包括关联?
- arrays - C从文本文件中读取数字
- java - 反转 LinkedList 的偶数子列表
- python - 从 C++ 循环调用 Python 函数数小时后运行缓慢
- android - 为 Android 应用程序实现“插件”的选项有哪些?
- javascript - 如何使用chartjs中的y轴值进行操作
- python - 使用 tf.py_function 后,在 model.fit 期间出现 Tensorflow 2.6.0 错误:ValueError: Expect x to be a non-empty array or dataset
- c# - LambdaExpression 引用私有字段