1. 程式人生 > >springMVC返回hibernate多對多物件的json時 出現無限迴圈

springMVC返回hibernate多對多物件的json時 出現無限迴圈

用ie8時,請求json,eclipse直接宕機!!!!

除錯時,可以用chrome,看到無限迴圈的報錯。。。類似

{"empty":true,"total":4,"firstResult":0,"pageSize":10,"rows":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":[{"name":"admin","roles":[{"users":


。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

User 與 Role 是hibernate的多對多的關係!!!!

jackson中的@JsonBackReference和@JsonManagedReference,以及@JsonIgnore均是為了解決物件中存在雙向引用導致的無限遞迴(infinite recursion)問題。這些標註均可用在屬性或對應的get、set方法中。 


@JsonBackReference和@JsonManagedReference:這兩個標註通常配對使用,通常用在父子關係中。@JsonBackReference標註的屬性在序列化(serialization,即將物件轉換為json資料)時,會被忽略(即結果中的json資料不包含該屬性的內容)。@JsonManagedReference標註的屬性則會被序列化。在序列化時,@JsonBackReference的作用相當於@JsonIgnore,此時可以沒有@JsonManagedReference。但在反序列化(deserialization,即json資料轉換為物件)時,如果沒有@JsonManagedReference,則不會自動注入@JsonBackReference標註的屬性(被忽略的父或子);如果有@JsonManagedReference,則會自動注入自動注入@JsonBackReference標註的屬性。 


@JsonIgnore:直接忽略某個屬性,以斷開無限遞迴,序列化或反序列化均忽略。當然如果標註在get、set方法中,則可以分開控制,序列化對應的是get方法,反序列化對應的是set方法。在父子關係中,當反序列化時,@JsonIgnore不會自動注入被忽略的屬性值(父或子),這是它跟@JsonBackReference和@JsonManagedReference最大的區別。 

相關推薦

springMVC返回hibernate物件json 出現無限迴圈

用ie8時,請求json,eclipse直接宕機!!!! 除錯時,可以用chrome,看到無限迴圈的報錯。。。類似 {"empty":true,"total":4,"firstResult":0,"pageSize":10,"rows":[{"name":"admin",

解決json序列化有一和關係的物件造成死迴圈的問題

json序列化的物件中存在雙向引用會導致的無限遞迴(infinite recursion)問題。 使用@JsonBackReference標記在有多對一或者多對多關係的屬性上即可解決這個問題,舉例

Hibernate兩表關係並引入第三表,JSON傳遞出現迴圈

There is a cycle in the hierarchy 出現原因:三表之間存在對映關係,若不限制迴圈,其中會由於表的外來鍵問題而出現錯誤 表:Permission 、Role 、PermissionRole 解決方法: 一、 Servlet:     List&

Hibernate操作

factory cnblogs all nec ping log per mes lds 1、首先創建兩個實體類(訂單類和商品類) 訂單類: /** * 在多對多關系中,在多的那一方,必須要有一個set集合屬性來保存一個那個實體 * 並提供共有的get

(轉)Hibernate框架基礎——關聯關系映射

-- 否則 del 畫圖 兩個 delete pub attribute cnblogs http://blog.csdn.net/yerenyuan_pku/article/details/52756536 多對多關聯關系映射 多對多的實體關系模型也是很常見的,比如學

【SSH高速進階】——Hibernate 映射

pen prop package 轉載 map tex test lec set   說到多對多關系。印象最深刻的就是大學的選修課。一個學生能夠選修多門課程,一門課程能夠有多個學生選修,學生所選的每一門課程還有成績。這個場景的E-R圖例如以下:  

Hibernate學習筆記(五) --- 創建基於中間關聯表的映射關系

mys 兩個 override pac tid 一對多 main ber different 多對多映射是在實際數據庫表關系之間比較常見的一種,仍然以電影為例,一部電影可以有多個演員,一個演員也可以參演多部電影,電影表和演員表之間就是“多對多”的關系 針對多對多的映射關系,

2.2、Hibernate用註解方式實現一對關系

tab 技術部 employee join incr 無法運行 hset strategy urn 一、一對多關系   1、在上一篇日誌中用.xml配置文件項目基礎上,再往lib目錄先添加一個包-hibernate-jpa-2.0-api-1.0.0.Final.jar  

hibernate的映射之四(雙向關聯)

als oot bean odi 生成 指定 數據庫方言 映射文件 格式化sql Many-to-Many 多對多的映射可以使用一組Java集合不包含任何重復的元素來實現。我們已經看到了Hibernate如何設置映射集合。 集(SET)被映射到與映射表中<set&g

hibernate 2 映射

開發環境 username ron 標準 pro ets 啟動 private net 一、實體類 1、Classes.java 1 package cn.gs.wwg.entity; 2 3 import java.util.Set; 4 5 public

Hibernate框架學習(七)——關系

ber hiberna 保存 hibernate .com 表達 clas 持久 員工 一、關系表達 1、表中的表達 2、實體中的表達 3、orm元數據中的表達 在User.hbm.xml中添加: 在Role.hbm.xml中添加(與上相反):

hibernate框架學習筆記9:關系案例

ola 元數據 none _id Coding property turn 線程 rop 員工與角色案例: 一個員工可以是多種角色(總監,經理),一種角色可以是多個員工(保潔) 這裏發現無法使用外鍵表達關系,多對多總是創建第三張表來維護關系 這張表至少兩列,都是外鍵,分別引

hibernate雙向關系映射的級聯配置

hibernate多對多雙向關系映級配置多對多關系映射 set元素的屬性:cascade:級聯操作。取值:save-update:級聯保存更新delete:級聯刪除。 註意:在多對多雙向關系映射中,不能配置雙向級聯刪除。但是可以配置雙向級聯保存更新。 <set name=&q

hibernate

hibernate多對多表結構 保存操作需求創建2個用戶和3個角色讓1號用具有1號和2號橘色讓2號用戶具有2號和3號角色 問題 在簡歷雙向關聯關系時,保存不成功 原因:在保存用戶時,會操作關聯關系表 在保存角色是,也會操作關聯關系表報主鍵重復錯誤 解決辦法 讓任意一方放棄維護的權利 多對多關系映射 s

hibernate關聯映射

article 文件 映射 sof col ble AR .so pri 映射原理:   不論是單項關聯還是雙向關聯都是通過第三張表,將兩個表中的主鍵放到第三個表中做一個關聯。用第三張表來解決可能會造成數據冗余的問題。 舉例:   一個用戶(User)對多個角色(Role)

Hibernate

for util .com borde org column nat open his 學生 - 老師 1 package com.zhangpn.entity; 2 3 import java.util.HashSet; 4 import java.ut

hibernate關於映射和一的hql查詢

nfa nat alt sso true chan select csdn exc public void queryCustomerbymerchantId(){ SessionFactory sf = HibernateUtil.getSessio

hibernate的關聯 2(增加、刪除)

重點: 1、級聯新增 inverse屬性值的設定 2、 級聯刪除 重點解析: 1.hibernate的多對多 1.1 hibernate可以直接對映多對多關聯關係(看作兩個一對多) 講解inverse; 總共四種 (false 是控制方 ,true 是被控制方),其中有兩種正確,兩種

hibernate的自關聯和

1、資料庫的多對多 資料庫中不能直接對映多對多 處理:建立一個橋接表(中間表),將一個多對多關係轉換成兩個一對多 注1:資料庫多表聯接查詢 永遠就是二個表的聯接查詢 注2:交叉連線 注3:外連線:left(左)/right(右)/full(左右) 主從表:連線條件不成立時,主表記錄永遠保

hibernate關係的新增與刪除

程式碼 bookdao public Integer save(Book book) { Session session = SessionFactoryUtils.getSession(); Transaction transaction = session.beginTran