beckham0207
2010-09-26 09:21
浏览 282
已采纳

应用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,无法取到数据库中的值。

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

4条回答 默认 最新

相关推荐 更多相似问题