版权声明:本文为博主原创文章,未经博主允许不得转载! https://blog.csdn.net/bojinyanfeng/article/details/87921445
异常如下所示:
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:430)
at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:430)
at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:442)
at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:383)
at org.codehaus.jackson.map.ser.ContainerSerializers$AsArraySerializer.serialize(ContainerSerializers.java:142)
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:430)
at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:430)
at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:442)
at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:383)
at org.codehaus.jackson.map.ser.ContainerSerializers$AsArraySerializer.serialize(ContainerSerializers.java:142)
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:430)
at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:430)
at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
...
异常只截一部分,根据百度到的结果,是因为实体里配置了一对多关系并且在转换成json时造成的。
实体类如下所示(还没修改的):
@Entity
@Table(name = "t_s_depart")
public class TSDepart extends IdEntity implements java.io.Serializable {
private TSDepart TSPDepart;//上级部门
private String departname;//部门名称
...(省略一部分代码)
private List<TSDepart> TSDeparts = new ArrayList<TSDepart>();//下属部门
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parentdepartid")
public TSDepart getTSPDepart() {
return this.TSPDepart;
}
public void setTSPDepart(TSDepart TSPDepart) {
this.TSPDepart = TSPDepart;
}
@Column(name = "departname", nullable = false, length = 100)
public String getDepartname() {
return this.departname;
}
public void setDepartname(String departname) {
this.departname = departname;
}
...(省略一部分代码)
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "TSPDepart")
public List<TSDepart> getTSDeparts() {
return TSDeparts;
}
public void setTSDeparts(List<TSDepart> tSDeparts) {
TSDeparts = tSDeparts;
}
}
解决方法如下:
方法一:实体类上加注释@JsonIgnoreProperties
参考:https://www.xuebuyuan.com/1025974.html
@Entity
@Table(name = "t_s_depart")
@JsonIgnoreProperties(value={"TSDeparts"})
public class TSDepart extends IdEntity implements java.io.Serializable {
....(代码省略)
}
根据上述的方法修改,还是有这个异常,因为时间问题,这里暂时不管了。
方法二:在一对多中多的一方get方法上加上注解@JsonBackReference
参考:https://zzc1684.iteye.com/blog/2186502
...(省略一部分代码)
@JsonBackReference
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "TSPDepart")
public List<TSDepart> getTSDeparts() {
return TSDeparts;
}
public void setTSDeparts(List<TSDepart> tSDeparts) {
TSDeparts = tSDeparts;
}
}
根据上述方法可以解决该异常。至于在set方法上加注解没试过。
方法三:在一对多中一的get方法上加上注解@JsonIgnore
参考:https://my.oschina.net/u/943437/blog/145246
...(忽略一部分代码)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parentdepartid")
@JsonIgnore
public TSDepart getTSPDepart() {
return this.TSPDepart;
}
public void setTSPDepart(TSDepart TSPDepart) {
this.TSPDepart = TSPDepart;
}
...(忽略一部分代码)
根据上述方法可以解决该异常。
温馨提示:如果上述方法都解决不了,请检查一下导入的jar包版本(我的是1.8.4版本的)或者是否import正确
扫描二维码关注公众号,回复:
5452660 查看本文章
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonBackReference;
import org.codehaus.jackson.annotate.JsonIgnore;