以前对hibernate研究不是很深入,今天做项目又遇到一个问题,就是在hibernate中拉出的持久对象放入新集合中被修改,持久对象也变了。找了很久都没找到问题,最后才发现原来hibernate并不是看操作的对象是否是持久化对象,而是看目标对象中是否有持久化对象。
刚开始代码是这样的,rpds是持久化的对象,而rpdss是新new的集合。我把rpd中的数据放入在rpdss中然后进行了一系列的处理。没想到每次处理完后我rpd中的持久化对象都被修改了。
原因就是因为新new的集合中存在持久化对象。所以需要把rpds中的持久化对象做一个转存,所以我新建了一个临时的对象来储存
改为这样即可。
哎,之前没真正搞懂hibernate遇到了不少问题。