hibernate 中怎么执行update操作

如题所述

第1个回答  2016-09-09
首先你要知道,hibernate的update操作的运行机理:
hibernate的update是怎么样自动的进行update操作的呢?
首先hibernate先会执行一个select操作,到数据库中查找
当前要update操作的对象的主键是否存在,类似于:
select id from table where id=XXX
如果查找到了改id,就说明该对象是一个持久化对象,
如果该对像的某些属性变化了,hibernate就会自动的执行update操作,
同步数据库中的该对象。
如果hibernate没有查找到该id,就说明该对象是一个游离的对象,
hibernate就会执行insert操作。
根据这些,就可以找找是不是要update的对象的id在数据库中不存在,
或是更改的该对象的id。这些都是执行insert而不是update本回答被提问者和网友采纳
第2个回答  2016-09-09
通过hql语句或源生的sql进行update
语句执行用executeUpdate()

hibernate 中怎么执行update操作
首先hibernate先会执行一个select操作,到数据库中查找 当前要update操作的对象的主键是否存在,类似于:select id from table where id=XXX 如果查找到了改id,就说明该对象是一个持久化对象,如果该对像的某些属性变化了,hibernate就会自动的执行update操作,同步数据库中的该对象。如果hibernate没有查找...

hibernate无法执行update操作,怎么办
您好,hibernate中在使用update时,只是更改了缓存中的对应数据。需要调用Flush进行同步更新至数据库中。至于出现的原因,可能是你在某一个配置文件中写了一个相关的参数。如果 所有配置都没问题。就是Update 语句 debug 过去 时候没任何反映。 不报错的话。你这样做。在update 之前,先做一个 查询。然后...

在用hibernate的update方法的时候 没有执行,怎么回事
因为你要保存的对象里面已经有了主键。所以调用 saveorupdate()的时候 有主键对象就会执行更新操作。如果你是用spring管理起来的 hibernate的话 建议你在类的上面加上 @scope("prototype") 这样应该就不会出现这样的问题。 如果不是用的spring...

hibernate为什么用了saveOrUpdate该怎么用
持久化对象,在Session里边的,拥有持久化标识OID,此时的数据的内容只要修改,(ID)不能变,会引起数据此对象和数据库的联动,这是Hibernate通过同步来实现的。具体怎么实现,可参考对象的生命周期,和垃圾回收有一丝关系。此时的数据只要修改就算不使用saveOrUpdate也会达到更新数据库的效果。还有一种对象...

hibernate中怎么样实现批量更新
准备一个arrayList 把你要更新的实体要有ID值,放进去 然后用getHibernateTemplate().saveOrUpdateAll(arrayList)把集合放进去执行一下就OK了.

在Hibernate中如何修改一个记录中的某个字段
。通过hibernate session得到需要修改的持久态的对象并使上面定义的引用指向该对象。。修改数据。更新数据。Session s = getSessionFactory().openSession();tx=session.beginTransaction();temp=s.get(id);temp.setUser(YourNewUser);s.update(temp);tx.commit();s.close();...

Hibernate保存方法为什么执行的却是更新?无论怎样都插不进数据,一直在...
因为你要保存的对象里面已经有了主键。所以调用 saveorupdate()的时候 有主键对象就会执行更新操作。如果你是用spring管理起来的 hibernate的话 建议你在类的上面加上 @scope("prototype") 这样应该就不会出现这样的问题。 如果不是用的spring 就手动的把主键设置成null ...

hibernate 中, session的update方法问题
hibernate的update方法会根据主键去更新对象,如果user为空,应该是会报错的,解决你所问的问题 加判断 if(user!=null){session.update(user)},这样就避免插入空对象的情况了 去数据库查数据,是否真正的更新了

问一个关于hibernate的saveOrUpdate的问题
你update的时候必须先get对象,然后把要改的属性set,直接new的话,得到的不是持久化对象

hibernate中的update()与saveOrUpdate()的区别,load()与get()的区别...
如果对象id从来没有persistent过,也执行save,如果对象是persistent对象的一个新的verison,那么也save,除了上面的情况其他都执行update;load()方法在你想load的对象不存在时,会throw exception,而get方法就返回一个null给你;hibernate是实现对象persistence的orm的实现,JPA是整个对象persistence的规范。

相似回答