【发布时间】:2023-04-11 02:03:01
【问题描述】:
我正在尝试在电影和用户之间创建多对多关系。保存电影时出现此错误:
2017-12-01 16:12:43.351 WARN 17328 --- [nio-8090-exec-5] .c.j.MappingJackson2HttpMessageConverter:无法评估类型 [[简单类型,com.movieseat.models 类的 Jackson 反序列化。电影]]:java.lang.IllegalArgumentException:无法处理托管/反向引用'defaultReference':反向引用类型(java.util.List)与托管类型(com.movieseat.model.security.User)不兼容
2017-12-01 16:12:43.354 WARN 17328 --- [nio-8090-exec-5] .c.j.MappingJackson2HttpMessageConverter:无法评估类型 [[简单类型,com.movieseat.models 类的 Jackson 反序列化。电影]]:java.lang.IllegalArgumentException:无法处理托管/反向引用'defaultReference':反向引用类型(java.util.List)与托管类型(com.movieseat.model.security.User)不兼容
2017-12-01 16:12:43.356 WARN 17328 --- [nio-8090-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver:已解决由处理程序执行引起的异常:org.springframework.web.HttpMediaTypeNotSupportedException:内容类型“应用程序” /json;charset=UTF-8' 不支持
我有一个问题:
org.hibernate.collection.internal.PersistentBag[0]->com.movieseat.model.security.User["authorities"]->org.hibernate.collection.internal.Pe rsistentBag[0]->com.movieseat.model.security.Authority["users"]
我修复了:User.java
@JsonManagedReference
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "USER_AUTHORITY",
joinColumns = {@JoinColumn(name = "USER_ID", referencedColumnName = "ID")},
inverseJoinColumns = {@JoinColumn(name = "AUTHORITY_ID", referencedColumnName = "ID")})
private List<Authority> authorities;
和Authority.java:
@JsonBackReference
@ManyToMany(mappedBy = "authorities", fetch = FetchType.LAZY)
private List<User> users;
但现在看来我的 Movie.java 模型也需要某种注解。错误状态:
无法处理托管/反向引用“defaultReference”:反向引用类型 (java.util.List)
所以我尝试将@JsonBackReference 添加到我的 Movie.java 模型中的关系:
@JsonBackReference
@ManyToMany(mappedBy = "movies")
private Set<User> users = new HashSet<>();
但这无济于事。我还缺少什么吗?
【问题讨论】:
标签: java json spring hibernate serialization