java - 如何在不使用 @JsonIgnore 的情况下解决 (com.fasterxml.jackson.databind) 异常
问题描述
如果我不在@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;
}
}
如果我使用 @JsonIgnore ,当我保存时MasterCampusSections
不接受 json ,由于 @jsonIgnore 注释,它不会作为 json 接收
不使用@JsonIgnore注解就不能解决上面的异常吗?
如果可能,请告诉我!谢谢你。
解决方案
您似乎正在尝试做的是维护父子实体引用。尝试@JsonManagedReference
在. MasterCampusClass
_ @JsonBackReference
_MasterCampusSection
If, however, you need an explicit value referencing the parent class inside the JSON (like an id), you have to use custom serializers at both ends. Both the @JsonBackReference
and @JsonIgnore
annotations will make it ignore custom serializers.
推荐阅读
- prolog - Prolog 查询重复
- material-ui - 为什么 Material UI 的 Grid 组件根据环境使用不同的 propTypes 实现不同的组件
- ios - 如何制作圆形按钮,并且只响应圆形区域的点击事件
- html - 您可以使用 mailto 预先填写电子邮件的部分内容吗?
- keras - 从用于图像分割的 U-Net 迁移学习 [Keras]
- postgresql - 无法访问安装在 kubernetes 中的 Prometheus Postgres 导出器:连接被拒绝
- android - 缩小启用后无法识别android项目中的模块类
- javascript - React.js 和 D3,向强制有向图添加箭头
- mysql - 查询MySQL的问题
- selenium-webdriver - 无法在 selenium 中打开新选项卡或新窗口