解決Jackson序列化Hibernate對(duì)象問題

相信這個(gè)問題只要在spring中用過hibernate/JPA的同學(xué)都遇到過,網(wǎng)上一堆方案

  • 大多數(shù)方案都是說在實(shí)體上加@JsonIgnoreProperties然后忽略掉hibernate的代理對(duì)象中用于懶加載的兩個(gè)屬性(handler和hibernateLazyInitializer)藕畔,這種方案在實(shí)體不多的時(shí)候可行庵朝,但是對(duì)于強(qiáng)迫癥的我總覺得這不是最好的方案鳞尔,至少這真的是最次方案彼念,畢竟這應(yīng)該是一個(gè)全局問題狞尔,而不是用局部方案來解決笙蒙。

  • 后來谷歌和stf搜到的第二種方案是配置jackson的序列化策略,這算是全局配置了聚唐,通過往ObjectMapper里面設(shè)置SerializationFeature的FAIL_ON_EMPTY_BEANS,默認(rèn)是true丐重,也就是jackson找不到該屬性序列化器的時(shí)候會(huì)拋出異常腔召,也就導(dǎo)致序列化失敗的原因杆查,通過設(shè)置為false來規(guī)避序列化這種fail-fast機(jī)制(打個(gè)比方ヾ( ̄▽ ̄)),序列化問題算是在全局上解決了臀蛛,看起來算是最好方案了亲桦。

  • 其實(shí)在第二種方案搜索的過程也看到說,自己為那兩個(gè)hibernate代理屬性寫序列化器來忽略它們浊仆,其實(shí)這種應(yīng)該才是最好的方案(關(guān)于這種方案客峭,其實(shí)用起來不難,自己往spring ioc中注冊一個(gè)自定義的objectMapper就可以了抡柿,不過懶....)舔琅。第二種方案在運(yùn)用的過程中發(fā)現(xiàn),雖然序列化如期成功了洲劣,但是會(huì)發(fā)現(xiàn)序列化后的json會(huì)出現(xiàn)handler和hibernateLazyInitializer备蚓,效果是這樣的

       "handler": {},
       "hibernateLazyInitializer": {}
    

這種作為自從做了程序員強(qiáng)迫癥從無到有,再到日益嚴(yán)重的我簡直無法忍受囱稽。然后意外看到其實(shí)jackson有一個(gè)模塊功能是針對(duì)hibernate做了這方面的工作郊尝,這對(duì)于java程序員這種伸手黨簡直福音- -

無腦到什么程度呢?加個(gè)依賴就好了....

    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-hibernate5</artifactId>
        <version>2.9.0</version>
    </dependency>

jackson有個(gè)Jackson2DatatypeHelper類會(huì)檢查hibernate5組件是否存在classpath中战惊,如果存在就會(huì)激活流昏。老實(shí)說這種技術(shù)真的是很亮瞎狗眼。

我在用spring data rest吞获,貌似hibernate5Module對(duì)序列化的json格式做了變換(多了一層content)况凉,這應(yīng)該也算是一個(gè)沖突?依然在尋找方案中....

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末各拷,一起剝皮案震驚了整個(gè)濱河市茎刚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撤逢,老刑警劉巖膛锭,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粮坞,死亡現(xiàn)場離奇詭異,居然都是意外死亡初狰,警方通過查閱死者的電腦和手機(jī)莫杈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奢入,“玉大人筝闹,你說我怎么就攤上這事⌒裙猓” “怎么了关顷?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長武福。 經(jīng)常有香客問我议双,道長,這世上最難降的妖魔是什么捉片? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任平痰,我火速辦了婚禮,結(jié)果婚禮上伍纫,老公的妹妹穿的比我還像新娘宗雇。我一直安慰自己,他們只是感情好莹规,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布赔蒲。 她就那樣靜靜地躺著,像睡著了一般良漱。 火紅的嫁衣襯著肌膚如雪舞虱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天债热,我揣著相機(jī)與錄音砾嫉,去河邊找鬼。 笑死窒篱,一個(gè)胖子當(dāng)著我的面吹牛焕刮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播墙杯,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼配并,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了高镐?” 一聲冷哼從身側(cè)響起溉旋,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嫉髓,沒想到半個(gè)月后观腊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邑闲,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年梧油,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苫耸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡儡陨,死狀恐怖褪子,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情骗村,我是刑警寧澤嫌褪,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站胚股,受9級(jí)特大地震影響笼痛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜信轿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一晃痴、第九天 我趴在偏房一處隱蔽的房頂上張望残吩。 院中可真熱鬧财忽,春花似錦、人聲如沸泣侮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽活尊。三九已至隶校,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛹锰,已是汗流浹背深胳。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铜犬,地道東北人舞终。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像癣猾,于是被迫代替她去往敵國和親敛劝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容