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