getHibernateTemplate().get(entityClass, id)引发update操作???(J2EE))

jinshaojie2011 2012-02-01 11:12:18
我数据库里有一张用户表(User),这个表建有触发器,当对这张表进行添加、修改、删除时,会将变更记录的id插入变更通知表(Notify),现在的情况是,我用getHibernateTemplate().get(entityClass, id)该方法去获取一个用户时,再控制台里看到了update的sql语句,同时变更通知表(Notify)里也有了相应的内容,也就是说这个get方法让User表更新了,这是怎么回事???我把getHibernateTemplate().get(entityClass, id)方法换成findUniqueBy(...)方法后,问题消失了,另外我把实体类的注解从get方法移到属性上面也能解决问题,求各位大神帮忙看看是什么问题!
...全文
203 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinshaojie2011 2012-02-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rmn190 的回复:]

我想到一个可能是这样的。 在get前,你可能能Hibernate发送过update操作, 不过这个update操作Hibernate自己先藏起来了,并没有马上发给数据库, 当你调用get方法时,hibernate能识别出get与update在顺序上内在关系, 这样,它先执行了先前的update再执行get。 从而保证数据的一致性。

从设计模式上说, 这是Command模式的体现……
[/Quote]

谢谢您的回复,我仔细检查了每行代码,没找到有update的操作...
rmn190 2012-02-01
  • 打赏
  • 举报
回复
我想到一个可能是这样的。 在get前,你可能能Hibernate发送过update操作, 不过这个update操作Hibernate自己先藏起来了,并没有马上发给数据库, 当你调用get方法时,hibernate能识别出get与update在顺序上内在关系, 这样,它先执行了先前的update再执行get。 从而保证数据的一致性。

从设计模式上说, 这是Command模式的体现。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧