当前位置: 首页 > 知识库问答 >
问题:

无法评估类型的Jackson反序列化

丁淇
2023-03-14

我试图在电影和用户之间建立多对多的关系。当我保存电影时,我会收到这个错误:

2017-12-01 16:12:43.351警告17328---[nio-8090-exec-5]。c、 j.MappingJackson2HttpMessageConverter:未能评估类型[[simple type,class com.movieseat.models.Movie]]:java的Jackson反序列化。lang.IllegalArgumentException:无法处理托管/反向引用“defaultReference”:反向引用类型(java.util.List)与托管类型(com.movieseat.model.security.User)不兼容

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

2017-12-01 16:12:43.356警告17328---[nio-8090-exec-5]。w、 s.m.s.DefaultHandlerExceptionResolver:已解决由处理程序执行引起的异常:org。springframework。网状物HttpMediaTypeNotSupportedException:内容类型'application/json;字符集=UTF-8'不受支持

我有个问题:

组织。冬眠收集内部的PersistentBag[0]-

我用: 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;

和权威。爪哇:

@JsonBackReference
@ManyToMany(mappedBy = "authorities", fetch = FetchType.LAZY)
private List<User> users;

但现在看来,我的Movie.java模型也需要某种注释,错误状态为:

无法处理托管/反向引用“defaultReference”:反向引用类型(java.util.List)

所以我试着在我的电影中添加一个@jsonback引用。java模型:

@JsonBackReference
@ManyToMany(mappedBy = "movies")
private Set<User> users = new HashSet<>(); 

但这没用。我还缺什么吗?

共有1个答案

蓟安歌
2023-03-14

我通过添加

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

我的ser.java班

 类似资料:
  • 这是错误20-01-22 Wed14:17:56.475WARN MappingJackson2HttpMessageConzer无法评估Jackson反序列化类型[[简单类型,类lk.andunaechomedia.models.设备]]:com.fasterxml.jackson.databind.JsonMappingExc0019:多个返回引用属性与名称'user-运动'20-01-22周

  • 添加到DTO对象后,我想向服务器发送一个列表 从…起 当向控制器发送对象时,它会抛出

  • 这是一个重复问题,因为下面的问题要么乱七八糟,要么根本没有回答: Jackson永远无法处理泛型类型T,它认为它是JavaType的映射,但它会发现对象类型构造函数参数,因为类型擦除并抛出错误。这是杰克逊的错误,还是我做错了什么?TypeReference或JavaType的显式规范还用于什么?

  • 问题内容: 我正在尝试制作一个使用Jackson来反序列化POJO的类。 看起来像这样… 我对此实施有2个问题。 首先是我将类类型传递给方法,以便对象映射器知道应反序列化的类型。有使用泛型的更好方法吗? 同样在get方法中,我将一个从objectMapper返回的对象强制转换为T。这看起来特别讨厌,因为我必须在此处强制转换T,然后还必须从调用它的方法中强制转换对象类型。 我在该项目中使用了Robo

  • 我看过jackson反序列化@JsonTypeInfo的一个例子,那就是: 我试过了,效果很好。现在的问题是,在示例类中,Cat和Dog是从Animal中引用的,我想避免这种情况。有没有一种方法可以将类型绑定从类动物中移除,并且仍然进行反序列化工作?谢谢

  • 假设我有以下格式的JSON: 我试图避免自定义反序列化程序,并试图将上述JSON(称为Wrapper.java)反序列化为JavaPOJO。“type”字段指示“object”反序列化,即type=foo表示使用foo.java反序列化“object”字段。(如果type=Bar,则使用Bar.java反序列化对象字段)。Metadata/owner将始终以相同的方式对每个元数据使用简单的带Jac