解決hibernate雙向關係造成的一方重複執行SQl,或者死迴圈的問題

xusir發表於2013-06-24

  系統採用struts-json hibernate3.

在對關聯表配置manytoone onetomany雙向關聯的時候,在執行一方的時候,會發現列印出來的SQL語句多執行了一次或者多次。經過除錯,發現是在struts-json進行序列化時把關聯的物件再次取了一次。

經過多次百度,google查詢,最終找到解決辦法,把不需要的過濾掉就可以了。

有人建議在實體欄位上使用@json(seriliaze=false)來解決,個人不建議這樣做,這樣做是永遠不再讓當前欄位序列化了,如果需要用到的時候就麻煩了。

我使用的方法是過濾掉不需要的屬性。這樣不影響其它地方的使用,最後不再使用struts-json外掛了,改使用fastjosn,fastjson提供多種過濾方式比較namefilter,propertyfilter,propertyprefilter等,我使用了第二種,然後使用fastjson重新進行序列化。完美解決了問題。

相關文章