以前對hibernate研究不是很深入,今天做項目又遇到一個問題,就是在hibernate中拉出的持久對象放入新集合中被修改,持久對象也變了。找了很久都沒找到問題,最後才發現原來hibernate並不是看操作的對象是否是持久化對象,而是看目標對象中是否有持久化對象。
剛開始代碼是這樣的,rpds是持久化的對象,而rpdss是新new的集合。我把rpd中的數據放入在rpdss中然後進行了一系列的處理。沒想到每次處理完後我rpd中的持久化對象都被修改了。
原因就是因爲新new的集合中存在持久化對象。所以需要把rpds中的持久化對象做一個轉存,所以我新建了一個臨時的對象來儲存
改爲這樣即可。
哎,之前沒真正搞懂hibernate遇到了不少問題。