JPA一堆多循环引用错误 HttpMessageNotWritableException
来源:互联网 发布:数据结构课程设计java 编辑:程序博客网 时间:2024/05/22 12:16
发生了一个这样的错误
Resolved exception caused by Handler execution: org.springframework.http.converter.HttpMessageNotWritableException:
Could not write JSON document: Infinite recursion (StackOverflowError)
解决参照:
http://blog.csdn.net/qq_35357001/article/details/55505659
注意:ManyToOne属性上注解:
@JsonBackReference
没有起作用,在get方法上注解成功解决无线引用导致堆栈溢出的问题。
对onetomany的一方没有加任何的注解也可以从json转换到对象
package com.troy.keeper.monomer.demo.domain;import com.fasterxml.jackson.annotation.JsonBackReference;import com.fasterxml.jackson.annotation.JsonManagedReference;import javax.persistence.*;import java.util.List;import java.util.Set;/** * 创建者: apple * 创建时间:2017/9/21. * 功能模块: */@Entity@Table(name = "testdazbibiao")public class TESTDazhibiao { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "NAME") private String name; @Column(name = "SCORE") private String score; @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER) @JoinTable(name = "zhibao_xifenzhibiao",joinColumns ={@JoinColumn(name = "testdazbibiaoid")},inverseJoinColumns = {@JoinColumn(name ="testxifenzhibiaoid" )}) private List<TESTXifenzhibiao> children; public List<TESTXifenzhibiao> getChildren() { return children; } public void setChildren(List<TESTXifenzhibiao> children) { this.children = children; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getScore() { return score; } public void setScore(String score) { this.score = score; }}
package com.troy.keeper.monomer.demo.domain;import com.fasterxml.jackson.annotation.JsonBackReference;import com.fasterxml.jackson.annotation.JsonIgnore;import com.fasterxml.jackson.annotation.JsonManagedReference;import javax.persistence.*;import java.util.List;import java.util.Set;/** * 创建者: apple * 创建时间:2017/9/21. * 功能模块: */@Entity@Table(name = "testxifenzhibiao")public class TESTXifenzhibiao { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "NAME") private String name; @Column(name = "SCORE") private String score; @Column(name = "GETMETHOD") private String method; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "testdazbibiaoid") //生成JSON时候忽略 // private TESTDazhibiao TESTDazhibiao; @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER) @JoinTable(name = "xifenzhibiao_parameter",joinColumns ={@JoinColumn(name = "testxifendazbibiaoid")},inverseJoinColumns = {@JoinColumn(name ="testparameterid" )}) private List<TESTParameter> parameterList; @JsonBackReference public com.troy.keeper.monomer.demo.domain.TESTDazhibiao getTESTDazhibiao() { return TESTDazhibiao; } public List<TESTParameter> getParameterList() { return parameterList; } public void setParameterList(List<TESTParameter> parameterList) { this.parameterList = parameterList; } public void setTESTDazhibiao(com.troy.keeper.monomer.demo.domain.TESTDazhibiao TESTDazhibiao) { this.TESTDazhibiao = TESTDazhibiao; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getScore() { return score; } public void setScore(String score) { this.score = score; } public String getMethod() { return method; } public void setMethod(String method) { this.method = method; }}
服务中添加大指标,同时会级联保存
public void addDazhibiao(TESTDazhibiao dazhibiao){ List<TESTXifenzhibiao> xifenzhibiaoList =dazhibiao.getChildren(); if(xifenzhibiaoList !=null) { for (TESTXifenzhibiao xifen : xifenzhibiaoList ) { List<TESTParameter> parameters = xifen.getParameterList(); if(parameters != null) { for (TESTParameter p : parameters ) { p.setTESTxifenzhibiao(xifen); } } xifen.setTESTDazhibiao(dazhibiao); } } tesTzhibiaoRepository.save(dazhibiao);}
查询大指标的同时也会级联获取
@Overridepublic List<TESTXifenzhibiao> queryAllXIFENDazhibiao(int fatherid){ List<TESTXifenzhibiao> t = new ArrayList<>(); return t;}
阅读全文
0 0
- JPA一堆多循环引用错误 HttpMessageNotWritableException
- 常见循环引用错误场景
- C2146和C4430错误:循环引用错误
- 图的遍历... 错误一堆...
- [Spring+MyBatis3]关联查询(延迟加载)抛错误 org.springframework.http.converter.HttpMessageNotWritableException
- 父子表产生循环引用错误的解决办法
- 解决fastjson内存对象重复/循环引用json错误
- fasterxml 循环引用导致StackOverflowError线程栈错误
- Eclipse中Maven工程间循环引用错误
- AndroidStudio打包跑出来一堆错误解决方法:
- 循环引用
- 循环引用
- 循环引用
- 循环引用
- 循环引用
- “循环引用”
- 循环引用
- 循环引用
- android初探
- com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value:
- 利用apidoc维护api接口文档
- 利用MySQL-Front生成sql字典
- Android小白进阶(二)--自定义控件之自定义ViewGroup
- JPA一堆多循环引用错误 HttpMessageNotWritableException
- 应用统计学与R语言实现学习笔记(十二)——主成分分析
- GroupID和ArtifactID
- 【图像处理】透视变换 Perspective Transformation
- Android:Date、String、Long三种日期类型之间的相互转换
- 关于for语句思考
- 学习笔记:ES6之let和const
- Java自带线程池基本介绍
- Spring Boot应用的健康监控