Could not write JSON: Infinite recursion (StackOverflowError)解决办法

以系统管理中,用户和角色多对多的关系为例

问题部分代码:

UserEntity:

@ManyToMany
	@JoinTable(name = "user_role", joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id", columnDefinition = ("int COMMENT '用户id'"))}, inverseJoinColumns = {@JoinColumn(name = "role_id", referencedColumnName = "id", columnDefinition = ("int COMMENT '角色id'"))})
	private Set<RoleEntity> roleEntitySet;

RoleEntity:

@ManyToMany(mappedBy = "roleEntitySet")
	private Set<UserEntity> userEntitySet;

Controller:

@RequestMapping(value = "/list")
	public Object list() {
		return userJpa.findAll();
	}

问题原因:

在json序列化UserEntity的时候,发现RoleEntity并去序列化,在序列化RoleEntity的时候,发现有UserEntity又去序列化,导致死循环

解决办法:

在死循环的属性中挑一个使用率较低的,前面加@JsonIgnore,不让他json序列化

猜你喜欢

转载自blog.csdn.net/weixin_39841589/article/details/83409835