微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Boot:当实体具有双向引用ManyToMany,FetchType.LAZY时,请求答案中为“循环”

如何解决Spring Boot:当实体具有双向引用ManyToMany,FetchType.LAZY时,请求答案中为“循环”

美好的一天,

我正在研究Spring Boot。这是我的作品-https://github.com/Alex1182-St/java-spring-jpa-postgresql.git

我有2个实体:

AppUserEntity-https://github.com/Alex1182-St/java-spring-jpa-postgresql/blob/master/src/main/java/com/java/javaspringjpapostgresql/entities/AppUserEntity.java

和RoleEntity-https://github.com/Alex1182-St/java-spring-jpa-postgresql/blob/master/src/main/java/com/java/javaspringjpapostgresql/entities/RoleEntity.java

实体具有双向引用(ManyToMany,FetchType.LAZY)。

我的问题是,当我的方法(AppUserController中的方法appUserById2WithPost)返回一个实体而不是DTO时,答案中会出现“循环”。 这是这种叫的样子-

{{1}}

在Idea的控制台中,我遇到这样的错误-尝试解决异常[org.springframework.http.converter.HttpMessageNotWritableException]失败

具有方法-https://github.com/Alex1182-St/java-spring-jpa-postgresql/blob/master/src/main/java/com/java/javaspringjpapostgresql/controllers/AppUserController.java

的控制器

当然,我可以通过返回DTO(例如在appUserByIdWithPost方法中)或在实体中使用注释@JsonIdentityInfo来解决它。

但我担心该项目会引发错误。我想解决。但是我找不到原因。有人能帮我吗? 还是这种行为很正常?

先谢谢您

解决方法

我会说这种行为对于双向关系是正常的,并且可以使用JSON注释进行处理(尽管@JsonIdentityInfo不需要这样做:您可以考虑使用JsonIgnoreJsonValue)。

另一个问题是,您是否需要双向关系(在RoleEntity上确实需要多对多吗?),或者即使RoleEntity应该是一个实体。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。