【问题标题】:Failed to evaluate Jackson deserialization for type无法评估 Jackson 反序列化的类型
【发布时间】:2023-04-11 02:03:01
【问题描述】:

我正在尝试在电影和用户之间创建多对多关系。保存电影时出现此错误:

2017-12-01 16:12:43.351 WARN 17328 --- [nio-8090-exec-5] .c.j.MappingJackson2HttpMessageConverter:无法评估类型 [[简单类型,com.movi​​eseat.models 类的 Jackson 反序列化。电影]]:java.lang.IllegalArgumentException:无法处理托管/反向引用'defaultReference':反向引用类型(java.util.List)与托管类型(com.movi​​eseat.model.security.User)不兼容

2017-12-01 16:12:43.354 WARN 17328 --- [nio-8090-exec-5] .c.j.MappingJackson2HttpMessageConverter:无法评估类型 [[简单类型,com.movi​​eseat.models 类的 Jackson 反序列化。电影]]:java.lang.IllegalArgumentException:无法处理托管/反向引用'defaultReference':反向引用类型(java.util.List)与托管类型(com.movi​​eseat.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.mo‌​vieseat.model.securi‌​ty.User["authorities‌​"]->org.hibernate.co‌​llection.internal.Pe‌​ rsistentBag[0]->com.‌​movieseat.model.secu‌​rity.Authority["user‌​s"]

我修复了: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


    【解决方案1】:

    我通过添加解决了这个问题

    @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
    public class User {
    

    到我的 User.java 类

    【讨论】:

      猜你喜欢
      • 2018-11-14
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 2014-05-01
      • 2012-10-18
      • 1970-01-01
      相关资源
      最近更新 更多