json套json_JSON –拯救杰克逊
json套json
有时,您必须使用JavaScript从服务器中获取一些数据, JSON是完成此任务的不错选择。
让我们玩一下JPA揭秘(第1集)-@OneToMany和@ManyToOne映射中的Employer – Employee – Benefit示例。 我们将在基于Spring Framework的Web应用程序中使用它。
我们的第一个控制器将返回员工列表作为响应主体,在本例中,将自动使用MappingJacksonHttpMessageConverter将handleGet方法返回的值转换为发送给客户端的响应。
@Controller
@RequestMapping('/employee-list.json')
public class EmployeeListController {@Autowiredprivate EmployerDAO employerDAO;@RequestMapping(method = RequestMethod.GET)@ResponseBodypublic List<Employee> handleGet(@RequestParam('employerId') Long employerId) {return employerDAO.getEmployees(employerId);}
}
当我们第一次尝试获取数据时,我们遇到了一个美丽的异常: JsonMappingException:无限递归(StackOverflowError) –由雇主–雇员–福利之间的双向引用引起。
寻找可能的解决方案,我发现了一条注释, 该声明使用声明式方法处理双向引用 ,并且在阅读它之后,已通过以下方式更正了域实体:
@Entity
@Table(name = 'EMPLOYERS')
public class Employer implements Serializable {
...@JsonManagedReference('employer-employee')@OneToMany(mappedBy = 'employer', cascade = CascadeType.PERSIST)public ListgetEmployees() {return employees;}
...
}@Entity
@Table(name = 'EMPLOYEES')
public class Employee implements Serializable {
...@JsonManagedReference('employee-benefit')@OneToMany(mappedBy = 'employee', cascade = CascadeType.PERSIST)public ListgetBenefits() {return benefits;}@JsonBackReference('employer-employee')@ManyToOne(optional = false)@JoinColumn(name = 'EMPLOYER_ID')public Employer getEmployer() {return employer;}
...
}@Entity
@Table(name = 'BENEFITS')
public class Benefit implements Serializable {
...@JsonBackReference('employee-benefit')@ManyToOne(optional = false)@JoinColumn(name = 'EMPLOYEE_ID')public Employee getEmployee() {return employee;}
...
}
完成上述更改后,我终于可以享受我的代码返回的JSON响应:
[{'id':1, 'benefits':[{'name':'Healthy Employees', 'id':1, 'type':'HEALTH_COVERAGE', 'startDate':1104534000000, 'endDate':null}, {'name':'Gold Autumn','id':2,'type':'RETIREMENT_PLAN','startDate':1104534000000,'endDate':null},{'name':'Always Secured','id':3,'type':'GROUP_TERM_LIFE','startDate':1104534000000,'endDate':null}],'firstName':'John'},{'id':2,'benefits':[],'firstName':'Mary'},{'id':3,'benefits':[],'firstName':'Eugene'}]
和往常一样,一些甜点的链接:
- JSON – JavaScript对象表示法
- 杰克逊–高性能JSON处理器
参考: JSON – Jackson是我们JCG合作伙伴 Micha的救助者吗? 术士思想博客上的Ja?tak。
翻译自: https://www.javacodegeeks.com/2012/09/json-jackson-to-rescue.html
json套json
json套json_JSON –拯救杰克逊相关推荐
- JSON –拯救杰克逊
有时您必须使用JavaScript从服务器中获取一些数据, JSON是完成此任务的不错选择. 让我们玩一下JPA揭秘(第1集)-@OneToMany和@ManyToOne映射中的"雇主-雇员 ...
- php返回json套数组_教你PHP怎么不用框架写优雅的中小网站
php这种语言本来就是函数化为主的语言,讲究的是简单实用.但是现在市面上现在流行的框架大多臃肿,复杂,学习难度大,同时有大量用不着的东西,做个小网站或者小项目还是太笨重.所以 这里我提供一点用纯php ...
- 苏宁V购 不为拯救 只求改变
前日,苏宁推出的V购服务意外的引发了不小的争论,没想到这本应该是很普通的一件事情,却激起了自媒体人关于V购能否救苏宁实体店的论战.其实,将V购套上拯救苏宁实体店的帽子有些太大了,V购的意义不是救,而是 ...
- JSON文件学习(jsonc、json-c)(不要学这个,去学cJSON)
json-c从会使用到自实现 json-c和jsoncpp的api使用教程(附视频链接) 文章目录 json-c和jsoncpp的api使用教程(附视频链接) 1.json的介绍 2.json格式的实 ...
- json.parser性能_Jackson JSON Java Parser API示例教程
json.parser性能 Jackson JSON Java Parser is very popular and used in Spring framework too. Java JSON P ...
- dnf登陆界面服务器显示数字,DNF让我成为了程序猿, 登录界面卡住了怎么办? 几个方法拯救你的卢克门票。...
原标题:DNF让我成为了程序猿, 登录界面卡住了怎么办? 几个方法拯救你的卢克门票. 昨天游戏更新之后,有很多小伙伴跟小编反应DNF登录游戏的时候总是卡在登录界面怎么办? DNF哪次更新总要伴随点BU ...
- IT公司老板落水,各部门员工会怎么救?老板:我还是乖乖学游泳吧~
来自:网络 公司高层 公司副总A:咱们开个会研究一下这个事情怎么处理. 公司副总B:如果老板没有救成功,下任是谁呢?会不会影响公司的上市? 公司副总C:我认为咱们开会应该讨论两个方案,一个是救人方案, ...
- 哪吒票房逼近40亿,用python爬取哪吒短评分析
目录 前言 分析 具体步骤 登录 爬取与存储 可视化分析 结语 前言 暑期档电影惨淡,但随着哪吒爆红开拓了新局面.这也是国产动画的首次爆红.在哪吒刚出,笔者以为最多10亿就算不错的了.没想过仅过了几天 ...
- IT公司老板落水,各部门员工怎么救
公司高层 公司副总A:咱们开个会研究一下这个事情怎么处理. 公司副总B:如果老板没有救成功,下任是谁呢?会不会影响公司的上市? 公司副总C:我认为咱们开会应该讨论两个方案,一个是救人方案,一个是危机公 ...
最新文章
- 利用BP神经网络教计算机进行非线函数拟合(代码部分单层)
- 阿里巴巴5月5日综合算法题详解
- VB中对AutoCAD图形对象进行缩放操作
- python编程在哪里写程序-教你如何编写、保存与运行Python程序的方法
- google nexus5x 刷机抓包逆向环境配置(一)
- stm32之TIM-高级定时器应用实例一(详细)
- 2656: [Zjoi2012]数列(sequence)(递归+高精度)
- 游戏中常用的寻路算法的分享(3):A*算法的实现
- C语言实现魔方阵代码及解析
- Mac os区别_SN及Mac地址烧录
- IP地址的网络位与主机位
- java路径Java开发中获得非Web项目的当前项目路径
- java jdk 8 中文文档
- hive查询数据库总条数
- 脚本之家去广告JS插件
- 双河市谷歌高清卫星地图下载
- Airsim+UnrealEngine4 搭建无人车/无人机自动驾驶仿真环境
- Java代码给csv文件加水印_如何给文件加上水印?
- 判断单链表成环与否?
- 针织厂计算机社会实践报告,大学生寒假针织厂打工实践报告