应用spring aop遇到的hibernate问题

系统应用spring aop来记录数据的修改记录,也就是记录系统的update操作。
需要记录操作前和操作后的变化 newEntity和oldEntity
我的做法是写了一个拦截器 如下:
[code="java"]
public class LogAdvice implements MethodBeforeAdvice {

public void before(Method method, Object[] args, Object target)
        throws Throwable {

}
[/code]

方法中的第二个参数就是在update操作前的数据,也就是newEntity,那么此时我还需要从数据库中取得oldEntity,
问题就出在这里,因为系统配置了延迟加载,openSessionInView,所以在request还没有完成之前,还是同一个session范围内,那我要用newEntity的id取数据的话,hibernate首先是从session缓存中取,此时session缓存中正好有一个newEntity,所以取到的数据其实还是newEntity,无法取到数据库中的值。

这个问题不知道哪位大虾遇到过或是有什么好的解决办法吗?

在查询之前清理session缓存。

那直接用sql 或者hql查询就行了。不用get或者load

直接给sql吧..
hql有时就会出些莫名其妙的问题..
不太习惯用hql...

加载一个对象出来。copy一份。再修改。直接比较这两个对象就OK。