`

onetomany级联删除异常

 
阅读更多

错误:

Caused by: org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations)

在service业务层添加事务注解@Transactional

	//删除用户组
	public boolean delUserGroup(GroupVo groupVo){
		String groupname = groupVo.getGroupname();
		SystemGroup group = null;
		if(groupname!=null){
			group = systemGroupDao.getSystemGroupByName(groupname);
		}
		if(group == null){
			return false;
		}
//		systemGroupDao.delSystemGroupActionByGroupName(group);
		group.delGroupAction();
		systemGroupDao.delete(group);
		return true;
	}

 事务开始到结束 都是同一session处理,导致查询出来的语句的状态还在关联session中[associations]

 必须删除事务标签

 

另一种情况

class:ActionRole

	@ManyToOne
	@JoinColumn(name = "actionid")
	private SystemAction action;
	
	@ManyToOne
	@JoinColumn(name = "roleid")
	private SystemRole role;

 class:SystemRole 

@OneToMany(mappedBy = "role", cascade = CascadeType.ALL,fetch=FetchType.EAGER)
private Set<SystemGroupAction> groupActions;

 

role.getGroupActions().clear();

 

systemGroupDao.delSystemRole(role);

分享到:
评论

相关推荐

    JPA中的一对多双向关联与级联操作

    级联操作是JPA提供的一种特性,允许开发者指定当一个实体被持久化、更新、删除时,其关联的实体应该如何处理。这可以通过`CascadeType`枚举在`@OneToMany`注解中设置。例如,如果我们希望当用户被删除时,所有相关的...

    hibernate的应用表之间的级联关系

    2. **数据完整性**:级联删除可能导致意外的数据丢失,因此在使用`CascadeType.DELETE`时需格外小心。 3. **事务管理**:级联操作通常在同一个事务中进行,确保数据一致性。如果不在同一个事务中,可能会引发并发...

    hibernate:一对多,多对多,一对一,乐观锁,二级缓存

    使用`@OneToMany`注解来定义这种关系,可以设置`mappedBy`属性指明反向关联的字段,以及`cascade`属性来决定级联操作,如保存、删除等。 3. **多对多(ManyToMany)关系**: 多对多关系常见于两个实体之间没有固定...

    hibernate常见异常针对于jpa

    - `CascadeType.REMOVE`: 当父实体被删除时,所有关联的子实体也将被删除。 - `CascadeType.REFRESH`: 当父实体被刷新时,所有关联的子实体也将被刷新。 - `CascadeType.ALL`: 同时执行上述所有操作。 #### 二、...

    struts2+hibernate+spring多表操作示例

    4. **多表查询与操作**:在多表关联的场景下,常见的操作有联合查询、级联保存/更新和级联删除。例如,通过Hibernate的 Criteria 或 HQL 查询语言,可以方便地执行多表的JOIN操作。级联保存时,只需要保存父对象,...

    hibernate入门代码

    通过@OneToMany、@ManyToOne、@ManyToMany等注解,可以设置级联操作,例如当删除一个对象时,是否也应删除与之关联的对象。 11. 配置映射文件(XML方式): 对于不熟悉注解的开发者,Hibernate也支持使用XML文件...

    hibernate 学习笔记3

    - `cascade="delete"`:级联删除操作,但在实际应用中较少使用,因为可能引发数据丢失。 - `cascade="all"`:全级联操作,包括保存、更新和删除,适用于一对一关系。 - `cascade="delete-orphan"`:删除未被引用的...

    Hibernate DOC 中文文档

    在映射配置中,可以设置属性的cascade属性,实现对象间的级联操作,如级联保存、级联删除等,简化开发过程。 **八、缓存机制** Hibernate提供了第一级缓存(Session级别的缓存)和第二级缓存(SessionFactory级别...

    javaweb_part12_2

    在Hibernate中,可以通过配置注解或XML来定义这种关系,并且可以设置级联操作,比如删除部门时,是否同时删除其关联的所有员工。 - **ManyToOne** 关系是OneToMany的反向关系,表示多个实体(子)对应一个实体(父...

    hibrenate3.6___API__zh-CN

    - 级联操作允许在主对象的操作中自动处理其关联对象,如级联保存、删除等。 - 在关联映射中通过cascade属性设置级联行为。 10. **延迟加载和懒加载** - 延迟加载(Lazy Loading)是Hibernate的重要特性,对象...

    Hibernate和spring集成

    同时,级联操作如`CascadeType.ALL`允许在保存或删除主体对象时自动处理关联对象。 8. **性能优化** Hibernate提供了缓存机制,如一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存)。Spring...

    hibernate 映射-一对多双向

    不过,通常这类博客会详细讲解如何在实际项目中设置和使用双向一对多映射,包括配置XML映射文件或使用注解,以及解决可能遇到的问题,比如懒加载异常、级联操作的使用等。 至于文件`shop_goods_20131001`,由于缺乏...

    Hibernate3.3jar包

    8. **级联操作(Cascading)**: 可以配置实体间的级联关系,如`@OneToMany` 和 `@ManyToOne` 的级联删除或更新。 9. **缓存机制**: Hibernate支持二级缓存,可以提高性能。一级缓存是每个`Session` 内部的缓存,二...

    spring jpa

    6. **懒加载和级联操作**:通过 @OneToMany、@ManyToOne 和 @ManyToMany 注解配置一对多、多对一和多对多的关系,同时可以设置 FetchType.LAZY 来实现懒加载,避免大数据量时的性能问题。级联操作如 CascadeType.ALL...

    Hibernate 参考文档

    例如,@OneToMany或@ManyToOne关系中可以设置cascade属性,实现对子对象或父对象的级联操作。 **缓存机制** Hibernate 提供了缓存策略来提高性能,包括一级缓存(Session级别的缓存)和二级缓存(SessionFactory...

    Hibernate 相关映射关系

    通过`@OneToMany`注解来配置,可以设置`fetch`策略(如LAZY或EAGER),以及`cascade`属性来决定操作的级联性。例如,一个部门可以有多个员工,Department实体中有一个Employee列表。 3. **多对一映射(Many-to-One...

    hibernate培训第一天

    3. **Session接口**:在Hibernate中,Session是与数据库交互的主要接口,它负责对象的持久化操作,如保存、更新、删除和查询。Session提供了事务管理功能,可以开启和提交事务,处理数据库操作的原子性。 4. **...

    hibernate03:多对一单向关联、多对一双向关联

    在实践过程中,我们还需要注意一些最佳实践,例如合理使用`fetch`策略(如`LAZY`或`EAGER`)来控制关联数据的加载时机,避免N+1查询问题,以及使用`CascadeType`来设置级联操作,简化数据操作流程。 总结来说,理解...

    Hibernate开发指南

    通过@OneToOne、@OneToMany、@ManyToOne和@ManyToMany注解定义关联关系,并可配置懒加载或立即加载策略。 9. 改动跟踪与脏检查 Hibernate具有改动跟踪机制,能够在对象状态变化时自动检测并更新数据库。通过实现...

    JPA API 开发手册

    5. **级联操作**: 通过`@OneToMany`、`@ManyToOne`和`@ManyToMany`注解,可以定义实体之间的关系,并设置级联操作,如级联保存、删除等。 6. **事务管理**: JPA支持声明式和编程式事务管理,可以方便地与Spring等...

Global site tag (gtag.js) - Google Analytics