休眠:在选择呼叫时执行更新 [英] Hibernate: executes update on select call

查看:145
本文介绍了休眠:在选择呼叫时执行更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

I'm having trouble with hibernate, i'm getting constraint violation exception on call, where I just want to call a 'select'.

我在hibernate遇到问题,在调用时出现约束违例异常,我只想调用'select' return getHibernateTemplate()。execute(new HibernateCallback< List< HibernateObject>>(){
@Override
public List< HibernateObject> doInHibernate(Session session){
Criteria criteria = session
.createCriteria(HibernateObject.class)
.add(eq(myobject.id,id));

return criteria.list();
}
});

return getHibernateTemplate().execute(new HibernateCallback<List<HibernateObject>>() { @Override public List<HibernateObject> doInHibernate(Session session) { Criteria criteria = session .createCriteria(HibernateObject.class) .add(eq("myobject.id", id)); return criteria.list(); } });

另外,更新调用会发生不是 HibernateObject ,只是为了相关的对象。
如何在没有我明确的调用的情况下找出更新发生的原因?

Also update call happens for not HibernateObject, just for related object. How can I find out why update is happening there without my explicit calls?

推荐答案

默认情况下,hibernate使用 FlushMode.AUTO 表示:

By default hibernate uses FlushMode.AUTO which means:


会话有时会在执行查询之前刷新,以确保查询永不返回陈旧状态。

The Session is sometimes flushed before query execution in order to ensure that queries never return stale state.

具有脏状态的实体必须附加到您的会话和Hibernate在执行查询之前保留它。

An entity with dirty state must be attached to your session and Hibernate persists it before executing the query.

这篇关于休眠:在选择呼叫时执行更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆