jackson java转json hibernate 造成的堆栈溢出 无限递归问题

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bitree1/article/details/64128051 contr...
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bitree1/article/details/64128051

controller 返回 geometry 字段报错

Infinite recursion (StackOverflowError) 

(through reference chain: com.vividsolutions.jts.geom.Polygon["envelope"]->

com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->
com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->
com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->
->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]-
>com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygo
n["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon
["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon
["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope
"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsol
utions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->
com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->
com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->
com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->
com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->
com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->com.vividsolutions.jts.geom.Polygon["envelope"]->
三月 19, 2017 2:27:06 下午 org.apache.catalina.core.ApplicationDispatcher invoke
@JsonIgnore
@JSONField(serialize=false,deserialize=false)
@Type(type = "org.hibernate.spatial.GeometryType")
@Column(name = "Shape",columnDefinition="Geometry")
private Polygon Shape;
/**
* Shape()
* wkt格式
*/
@Transient
private String wktShape;
@JsonIgnore
public Polygon getShape() {
return Shape;
}
@JsonIgnore
public void setShape(Polygon shape) {
Shape = shape;
}
public String getWktShape() {
return Shape.toText();
}
public void setWktShape(String wktShape) {
this.wktShape = wktShape;
}
  注 :(1)get set 方法上面的 @JsonIgnore用于返回大写字母的字段,防止被转小写,可与字段上面的@JsonProperty组合

WARN  o.s.w.s.h.SimpleMappingExceptionResolver - Handler execution resulted in exception: Could not write content:

严重: Servlet.service() for servlet jsp threw exception

原因:jackson java转json hibernate  造成的堆栈溢出 无限递归问题

解决方法

思路:屏蔽geometry 字段输出,重新定义一个字段获取 上一个geometry字段的wkt格式字符串

代码:如我需要输出shape字段为geometry格式 

    (1)则在弄一个wktShape字段作为代替输出

    (2)字段上面的@JsonIgnorey用于前端返回json的时候屏蔽输出字段




目录
相关文章
|
1月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
127 1
|
1月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
144 1
|
4月前
|
Java 数据库连接 API
Java 8 + 特性及 Spring Boot 与 Hibernate 等最新技术的实操内容详解
本内容涵盖Java 8+核心语法、Spring Boot与Hibernate实操,按考试考点分类整理,含技术详解与代码示例,助力掌握最新Java技术与应用。
146 2
|
11月前
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
240 25
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
|
12月前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
1223 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
SQL Java 数据库连接
从理论到实践:Hibernate与JPA在Java项目中的实际应用
本文介绍了Java持久层框架Hibernate和JPA的基本概念及其在具体项目中的应用。通过一个在线书店系统的实例,展示了如何使用@Entity注解定义实体类、通过Spring Data JPA定义仓库接口、在服务层调用方法进行数据库操作,以及使用JPQL编写自定义查询和管理事务。这些技术不仅简化了数据库操作,还显著提升了开发效率。
279 3
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
725 0
在Java中处理JSON数据:Jackson与Gson库比较
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
457 1
|
JSON Java fastjson
java小工具util系列3:JSON和实体类转换工具
java小工具util系列3:JSON和实体类转换工具
277 2
|
JSON 前端开发 JavaScript
java中post请求调用下载文件接口浏览器未弹窗而是返回一堆json,为啥
客户端调接口需要返回另存为弹窗,下载文件,但是遇到的问题是接口调用成功且不报错,浏览器F12查看居然返回一堆json,而没有另存为弹窗; > 正确的效果应该是:接口调用成功且浏览器F12不返回任何json,而是弹窗另存为窗口,直接保存文件即可。
479 2