博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate 双向关联转换 JSON 防止死循环
阅读量:6854 次
发布时间:2019-06-26

本文共 2072 字,大约阅读时间需要 6 分钟。

版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82732071

Hibernate 双向关联转换 JSON 防止死循环

Hibernate 中经常存在双向关联的情况,此处将数据转换为 JSON 格式则可能导致死循环

更多精彩

  • 更多技术博客,请移步

获取数据时只需要单向关联

  1. 这种情况下父类需要子类数据,而子类不需要父类数据
@Entity@Table(name = "ht_feedback_template")public class FeedbackTemplate extends BaseModel {
@OneToMany(mappedBy = "feedbackTemplate", cascade = {CascadeType.ALL}, fetch = FetchType.LAZY) @OrderBy("indexNo asc") private Set
questions; public Set
getQuestions() { return questions; } public void setQuestions(Set
questions) { this.questions = questions; }}
  1. 在子类中对父类的引用字段加上 @JsonIgnore 即可
@Entity@Table(name = "ht_feedback_question")public class FeedbackQuestion extends BaseModel {
@ManyToOne @JsonIgnore private FeedbackTemplate feedbackTemplate; public FeedbackTemplate getFeedbackTemplate() { return feedbackTemplate; } public void setFeedbackTemplate(FeedbackTemplate feedbackTemplate) { this.feedbackTemplate = feedbackTemplate; }}

获取数据时确实需要双向关联

  1. 在父类对子类的引用字段加上 @JsonManagedReference
@Entity@Table(name = "ht_feedback_template")public class FeedbackTemplate extends BaseModel {
@OneToMany(mappedBy = "feedbackTemplate", cascade = {CascadeType.ALL}, fetch = FetchType.LAZY) @OrderBy("indexNo asc") @JsonManagedReference private Set
questions; public Set
getQuestions() { return questions; } public void setQuestions(Set
questions) { this.questions = questions; }}
  1. 在子类中对父类的引用字段加上 @JsonBackReference 即可
@Entity@Table(name = "ht_feedback_question")public class FeedbackQuestion extends BaseModel {
@ManyToOne @JsonBackReference private FeedbackTemplate feedbackTemplate; public FeedbackTemplate getFeedbackTemplate() { return feedbackTemplate; } public void setFeedbackTemplate(FeedbackTemplate feedbackTemplate) { this.feedbackTemplate = feedbackTemplate; }}
你可能感兴趣的文章
Word 2003启动后如何彻底去掉缩略图
查看>>
Puppet实战-Puppet主机、模块、类、资源、变量、参数、标签命名规范
查看>>
技术总结:自动扩张WPF树型表格列宽
查看>>
使用wxWidgets for C++从资源文件中静态装载图像
查看>>
WINSTC(windows remote server/run time/remote client)自己想的b/s方案
查看>>
oc54--auatorelease应用场景
查看>>
Ext.Net全部Icon图标名称展示
查看>>
RHEL7.0 配置网络IP的三种方法
查看>>
使用endmqm 命令无法停止MQ队列管理器,怎么办?
查看>>
ArcGIS中ObjectID,FID和OID字段区别
查看>>
Linux 小知识翻译 - 「Linux和CPU的兼容性」
查看>>
docker数据拷贝
查看>>
ejs模板中的四种表达式输出形式
查看>>
innerHTML与innerText的异同
查看>>
【阿里云MVP Meetup 第五期】如何使用Elasticsearch进行智能运维
查看>>
学习笔记:md5加密算法极其应用(转)
查看>>
Azure ARM (17) 基于角色的访问控制 (Role Based Access Control, RBAC) - 自定义Role
查看>>
beginner3
查看>>
QT Creater + vs2010 发布程序
查看>>
android adb shell 总结
查看>>