背景:
使用spring-data-neo4j 進行crud 資料。在進行大批資料入庫時,資料入庫到一半,突然提示
neo.transienterror.network.communicationerror"; code: neo.transienterror.network.communicationerror; description: can not start an object, expecting field name
本次實體是(已經真實資訊進行處理):
@getter
@setter
@tostring
@nodeentity
(label =
"person"
)public
class
person
implements
comparable
@getter
@setter
@relationshipentity
(type =
"standard"
)public
class
standard
開始還以為是有髒資料,比如有空的,非法的資料,先對資料進行排查過濾處理,保證入庫的資料關鍵字段都是合法的。重試。發現問題依舊存在。
經過排查發現。每當我建立@relationshipentity時,在dubug 檢視資料時可以會在將圖形序列化為json時遇到無限遞迴。
雖然通過 @jsonbackreference 避免了序列化,但是貌似還是不生效。當少量的資料時,序列化正常。當資料量大時,跑到一半就報can not start an object, expecting field name。
通過查閱相關的資料,發現使用jsog嘗試呈現圖形只會導致不同的,格式錯誤的json響應。
最後看到github 的小demo (
這個demo 演示使用小測試用例呈現迴圈資料的問題。
最終是通過 使用@jsonignore注釋或配對:@jsonbackreference和@jsonmanagedreference
解決迴圈資料的問題。
最後實體是:
@getter
@setter
@relationshipentity
(type =
"standard"
)public
class
standard
補充知識:
@jsonmanagedreference和@jsonbackreference 序列化時,
@jsonbackreference標註的屬性在會被忽略。
@jsonmanagedreference標註的屬性則會被序列化。
在序列化時,@jsonbackreference的作用相當於@jsonignore,此時可以沒有@jsonmanagedreference。
反序列化時,如果沒有@jsonmanagedreference,則不會自動注入@jsonbackreference標註的屬性(被忽略的父或子);如果有@jsonmanagedreference,則會自動注入自動注入@jsonbackreference標註的屬性。
Neo4j學習(2) Win系統安裝Neo4j
neo4j 是目前最流行的圖形資料庫,支援完整的事務,在屬性圖中,圖是由頂點 vertex 邊 edge 和屬性 property 組成的,頂點和邊都可以設定屬性,頂點也稱作節點,邊也稱作關係,每個節點和關係都可以由乙個或多個屬性。neo4j建立的圖是用頂點和邊構建乙個有向圖,其查詢語言cypher...
Neo4j檔案說明
neo4j作為資料庫式的nosql工具,檔案儲存也有其獨特方面。neostore neostore.id 儲存版本資訊 neostore.nodestore.db neostore.nodestore.db.id 儲存節點資料與節點序列id neostore.propertystore.db neo...
Neo4j學習筆記
neo4j學習筆記 一.基本知識 1.1 node syntax 節點語法 matrix movie matrix movie matrix movie matrix movie 1 代表乙個節點uncharacterized node 2 matrix 新增了乙個變數為matrix的節點。3 mo...