`
tuyuan
  • 浏览: 31020 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hibernate saveOrUpdate 批量保存或更新问题

    博客分类:
  • Java
阅读更多

在使用Hibernate saveOrUpdate 批量保存或更新数据时(也就是即有保存又有更新),有时会报如下错误:

 

org.hibernate.HibernateSystemException: a different object with the same identifier value was already associated with the session: [com.lee.dao.hibernate.User#12]

 

方法的调用:

evaluateService.saveOrUpdate(comment,orderDetail,user)

 

 

原始报错方法如下: 

@Transactional public void saveOrUpdate(Object...objects) { for(Object obj : objects){ getHibernateTemplate().saveOrUpdate(obj); getHibernateTemplate().flush(); } }

修改后方法如下:

@Transactional
public void saveOrUpdate(Object...objects) {
	for(Object obj : objects){
		getHibernateTemplate().saveOrUpdate(obj);
		getHibernateTemplate().flush();
		getHibernateTemplate().clear();//后添加
	}
}
 
分享到:
评论

相关推荐

    HibernateHQL.zip_更新

    在Hibernate中,插入数据通常通过Session对象的save()或saveOrUpdate()方法完成。然而,HQL也支持插入操作,它允许我们以面向对象的方式编写插入语句。例如: ```java session.createQuery("insert into EntityName...

    MLDN_Hibernate开发实战讲解视频教程

    9. 批量操作:为了提高性能,Hibernate支持批量插入、更新和删除,以及批处理查询。 10. JPA集成:Hibernate也实现了Java Persistence API(JPA),提供了一种标准的方式来使用ORM服务。 通过"MLDN_Hibernate开发...

    hibernate入门学习笔记+源码

    5. **CRUD操作**: 插入(save()或saveOrUpdate())、更新(update())、查询(load()、get()、Criteria、HQL等)、删除(delete())。 6. **事务处理**: Hibernate支持自动和手动的事务管理,确保数据的一致性。 **...

    hibernate视频

    - **批量插入**:使用saveOrUpdate方法一次插入多个对象。 - **批量更新/删除**:使用SQL语句或HQL进行批量操作。 #### 5.3 懒加载与立即加载 - **懒加载**:默认情况下,Hibernate在需要时才加载关联对象的数据。 ...

    Hibernate方法总结

    批量操作,如批量删除或更新。例如,`bulkUpdate`方法可以直接执行SQL更新或删除语句,极大提高了效率。需要注意的是,批量操作后,由于对象可能在Hibernate的缓存中,所以需要手动清除缓存以保持数据一致性。 E. `...

    hibernate数据库相关操作步骤

    - **保存/插入**:使用`Session`的`save()`或`saveOrUpdate()`方法来保存新实体到数据库。 - **更新**:对已存在的实体进行修改后,调用`Session`的`update()`方法来更新数据库。 - **删除**:通过`Session`的`...

    hibernate立体结构文档

    1. 插入:Session的save()或saveOrUpdate()方法,将对象持久化到数据库。 2. 更新:Session的update()方法,更新已存在的对象。 3. 删除:Session的delete()方法,删除对象。 4. 查询:HQL、Criteria API或原生SQL...

    hibernate-release-5.0.0.Final(1).zip

    - 通过Session的save()或saveOrUpdate()方法保存对象到数据库。 - 使用find()或get()方法获取对象,或使用createQuery()或createSQLQuery()构建查询语句。 - 在事务中执行批量操作,确保数据的原子性和一致性。 - ...

    Hibernate说明

    1. 插入(Save/SaveOrUpdate):将对象状态持久化到数据库。 2. 更新(Update):修改已存在的对象状态并同步到数据库。 3. 删除(Delete):从数据库中移除对象。 4. 加载(Load/Get):根据主键从数据库中获取对象...

    精通hibernate源码ch2

    - Batch processing:批量插入、更新和删除,提高数据库操作效率。 - Transaction boundaries:正确设置事务边界,确保并发环境下的数据一致性。 8. 高级特性: - Cascade:级联操作,当操作一个对象时,自动...

    hibernate 3.2.2

    3. 避免N+1查询问题:通过预加载关联数据或使用`JOIN`查询减少额外的数据库调用。 九、高级特性 1. 异步操作:通过Hibernate的事件监听器,可以实现异步持久化操作。 2. 移动对象:`DetachedCriteria`允许在不打开...

    hibernate 中文文档 and _annotation.chm

    - 插入和更新:使用Session的save()、saveOrUpdate()、persist()方法完成对象的保存。 - 删除:调用Session的delete()方法删除对象。 - 加载和刷新:load()和get()用于根据ID加载对象,refresh()用于刷新对象状态...

    使用Hibernate开发租房系统第12章课件包含代码

    8. 批量操作:学习如何使用Hibernate进行批量插入、更新和删除,以提高效率,例如Session的saveOrUpdateAll()、deleteAll()和flush()方法。 9. 第二级缓存:了解Hibernate的缓存机制,特别是第二级缓存,它可以提高...

    Hibernate课程的总结

    1. Session:是Hibernate的主要工作单元,负责保存、更新和删除对象,以及执行HQL(Hibernate查询语言)。 2. Transaction:处理数据的原子性,确保一组操作要么全部成功,要么全部失败。 **五、CRUD操作** 1. 插入...

    HibernateDemo HibernateDemo

    - **批处理(Batch Processing)**:批量插入或更新,提高数据库操作效率。 - **缓存策略调整**:合理设置缓存级别和生命周期,避免无效的数据库访问。 - **SQL优化**:监控和分析生成的SQL,避免全表扫描等低效操作...

    hibernate框架开发视频资料

    - **批量处理**:对于大量数据的插入、更新操作,可以使用批量处理方式,减少与数据库的交互次数。 - **缓存机制**:Hibernate提供了二级缓存功能,可以在多个请求之间共享数据,减少数据库访问压力。 ### 总结 ...

    Hibernate3.1帮助文挡

    Hibernate 支持批量插入、更新和删除,可以显著提高性能。同时,合理的缓存策略,如设置合理的缓存大小和过期时间,能够进一步提升应用性能。 ### 链接与关联 Hibernate 支持多种关联类型,如一对一(OneToOne)、...

    超好用的hibernate查询工具类

    例如`public void saveOrUpdate(T entity)`,在保存或更新实体时自动处理事务。 6. **批量操作**:提供批量插入、更新或删除的方法,比如`public void batchSave(List<T> entities)`,这在处理大量数据时可以大大...

    hibernate-distribution-3.6.7.Final-dist.zip

    1. 插入(Insert):使用Session的save()或saveOrUpdate()方法实现对象持久化。 2. 更新(Update):调用Session的update()方法更新已存在的对象。 3. 删除(Delete):调用Session的delete()方法删除对象。 4. ...

Global site tag (gtag.js) - Google Analytics