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条回答 默认 最新

  • lizhiyezi 2010-09-26 09:40
    关注

    在查询之前清理session缓存。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧