日期:2014-05-17  浏览次数:20704 次

Hibernate查询(get)出一个对象,对其的其中一个属性执行set操作,默认自动执行update操作,怎么阻止这个行为?
Hibernate查询(get)出一个对象,对其的其中一个属性执行set操作,默认自动执行update操作,怎么阻止这个行为?我用的是注解,在网上看了设置查询方法的事物为只读也没能解决掉。求各大神出个主意
hibernate 对象

------解决方案--------------------
这个关系到用hibernate查找出的对象是为游离态,当你进行修改的时候,他就会自己修改。
解决办法是你要给出另外一个存储空间存放这些数据。
我当初怎么转到另外一个空间的记不清楚了,但是再命名一个对象指向这个对象是肯定不行的。
sorry,只能帮你这么多了
------解决方案--------------------
1、session.saveOrUpdate(object)。这语句会把游离态的PO转为持久态的PO并提交给数据库

2、session.merge(object)。这语句会把游离态的PO转为持久态的PO,并进行合并操作。

3、session.lock(object, LockMode.NONE)。这语句只会把游离态的PO转为持久态PO,不作其他操作。不过,PO必须是没有修改过的,这方法挺适合做一个应用层
------解决方案--------------------
这是因为hibernate对持久态的对象会进行自动的比较的。你get出来的持久态的对象你可以用session的evict(Object object)把这个对象变成脱管的就可以了