Java 如何使用@JsonIgnore在不使用out的情况下解决(com.fasterxml.jackson.databind)异常

Java 如何使用@JsonIgnore在不使用out的情况下解决(com.fasterxml.jackson.databind)异常,java,hibernate,hibernate-mapping,Java,Hibernate,Hibernate Mapping,如果我不在映射方法上使用@JsonIgnore注释,则在获取数据时会遇到此异常 at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) at com.f

如果我不在映射方法上使用
@JsonIgnore
注释,则在获取数据时会遇到此异常

at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:149)
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:112)
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25)
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:149)
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:112)
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25)
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
请看一下实体类

package com.rasvek.cg.entity;
// Generated May 14, 2018 11:39:07 PM by Hibernate Tools 5.1.7.Final

import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import com.fasterxml.jackson.annotation.JsonIgnore;

/**
 * MasterCampusClass generated by hbm2java
 */
@Entity
@Table(name = "master_campus_class", catalog = "campus_guru_01")
public class MasterCampusClass implements java.io.Serializable {

    private Integer classId;
    private String className;
    private String classShortName;
@Id
    @GeneratedValue(strategy = IDENTITY)

    @Column(name = "class_id", unique = true, nullable = false)
    public Integer getClassId() {
        return this.classId;
    }

    public void setClassId(Integer classId) {
        this.classId = classId;
    }

    @Column(name = "class_name")
    public String getClassName() {
        return this.className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    @Column(name = "class_short_name")  
    public String getClassShortName() {
        return this.classShortName;
    }


//@JsonIgnore  
@OneToMany(fetch = FetchType.EAGER, mappedBy = "masterCampusClass")
    public Set<MasterCampusSection> getMasterCampusSections() {
        return this.masterCampusSections;
    }

    public void setMasterCampusSections(Set<MasterCampusSection> masterCampusSections) {
        this.masterCampusSections = masterCampusSections;
    }
}
package com.rasvek.cg.entity;
//由Hibernate Tools 5.1.7.Final于2018年5月14日晚上11:39:07生成
导入java.util.HashSet;
导入java.util.Set;
导入javax.persistence.Column;
导入javax.persistence.Entity;
导入javax.persistence.FetchType;
导入javax.persistence.GeneratedValue;
导入静态javax.persistence.GenerationType.IDENTITY;
导入javax.persistence.Id;
导入javax.persistence.OneToMany;
导入javax.persistence.Table;
导入com.fasterxml.jackson.annotation.JsonIgnore;
/**
*由hbm2java生成的MasterCampusClass
*/
@实体
@表(name=“master\u campus\u class”,catalog=“campus\u guru\u 01”)
公共类MasterCampusClass实现java.io.Serializable{
私有整数classId;
私有字符串类名;
私有字符串classShortName;
@身份证
@生成值(策略=标识)
@列(name=“class\u id”,unique=true,nullable=false)
公共整数getClassId(){
返回此.classId;
}
公共void setClassId(整数classId){
this.classId=classId;
}
@列(name=“class\u name”)
公共字符串getClassName(){
返回this.className;
}
public void setClassName(字符串className){
this.className=className;
}
@列(name=“class\u short\u name”)
公共字符串getClassShortName(){
返回此.classShortName;
}
//@杰索尼奥雷
@OneToMany(fetch=FetchType.EAGER,mappedBy=“masterCampusClass”)
公共集getMasterCampusSections(){
返回此.masterCampusSections;
}
公共无效设置masterCampusSections(设置masterCampusSections){
this.masterCampusSections=masterCampusSections;
}
}
如果我使用@JsonIgnore,当我保存
MasterCampusSections
时,它不接受json,因为@JsonIgnore注释,它不会作为json接收

我们不能在不使用@JsonIgnore注释的情况下解决上述异常吗


如果可能,请让我知道!谢谢。

看来您要做的是维护父子实体引用。尝试在
MasterCampusClass
中使用
@JsonManagedReference
注释,并在
MasterCampusSection
中的匹配字段上使用
@JsonBackReference


但是,如果需要在JSON中引用父类的显式值(如id),则必须在两端使用自定义序列化程序。
@JsonBackReference
@JsonIgnore
注释都会使它忽略自定义序列化程序。

我们可以忽略抛出的
异常类型。堆栈跟踪从com.fasterxml.jackson.databind的
开始,在这些行的某个地方是异常本身。它可能会帮助我们。谢谢@coladict它的工作,非常感谢