Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jackson:自定义对象的解析(来自@JsonIdentityInfo)_Java_Spring Mvc_Jackson - Fatal编程技术网

Java Jackson:自定义对象的解析(来自@JsonIdentityInfo)

Java Jackson:自定义对象的解析(来自@JsonIdentityInfo),java,spring-mvc,jackson,Java,Spring Mvc,Jackson,在我的SpringWebMVC应用程序中,我试图反序列化对象引用列表 以下是“我的模型”字段的外观: @Entity @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id") public class Article { @Id private Integer id; @ManyToMany(cascade=CascadeType.ALL) @Js

在我的SpringWebMVC应用程序中,我试图反序列化对象引用列表

以下是“我的模型”字段的外观:

@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
public class Article {
    @Id
    private Integer id;

    @ManyToMany(cascade=CascadeType.ALL)
    @JsonIdentityReference(alwaysAsId=true)
    private List<Article> related;
}
我已经试着编写我的自定义反序列化程序来处理这个问题,但是由于关系是同一类的对象,Jackson也会尝试用自定义反序列化程序反序列化父对象,这显然会失败,因为它不仅仅是一个整数


那么有没有办法告诉Jackson使用数据库来查找ID后面的对象呢?

从2.4.0版开始,您可以使用@JsonIdentityInfo注释的“resolver”属性

@JsonIdentityInfo(
        generator = ObjectIdGenerators.PropertyGenerator.class,
        resolver = MyCustomObjectIdResolver.class,
        scope = Article.class,
        property = "id")
@JsonIdentityReference(alwaysAsId = true)
private List<Article> related;
@JsonIdentityInfo(
生成器=ObjectedGenerators.PropertyGenerator.class,
resolver=MyCustomObjectedResolver.class,
scope=Article.class,
property=“id”)
@JsonIdentityReference(alwaysAsId=true)
私有列表,因为@jsonidentialreference(alwaysAsId=true)


这在2.4.3中得到了修复,因为MyCustomObjectedResolver.class的代码中存在拼写错误,因此尝试编辑您的帖子。您的代码在Custom中显示“n”而不是“m”。
@JsonIdentityInfo(
        generator = ObjectIdGenerators.PropertyGenerator.class,
        resolver = MyCustomObjectIdResolver.class,
        scope = Article.class,
        property = "id")
@JsonIdentityReference(alwaysAsId = true)
private List<Article> related;