deleted object would be re-saved by cascade和ORA-02292

hibernate报错:

org.springframework.dao.InvalidDataAccessApiUsageException: 
deleted object would be re-saved by cascade (remove deleted object from associations): [org.herysoft.framework.sys.domain.Resource#1105]; 
nested exception is org.hibernate.ObjectDeletedException: 
deleted object would be re-saved by cascade (remove deleted object from associations): [org.herysoft.framework.sys.domain.Resource#1105]

ORA-02292: 违反完整约束条件 已找到子记录
也可以用以下方案解决

解决:
以上错误由于hibernate关联关系没有配置正确导致,下面描述下正确配置

这是主表,关联了两个外键role和resource,在其引用处添加*@ManyToOne*的注解,注意不要加Cascade级联属性,因为主表的数据删除不会引发外键表的数据变动

public class RoleResource extends AbstractPersistence {

	private Integer key;

	private Role role;
	private Resource resource;

	@Id
	@SequenceGenerator(name = "sequenceGenerator", sequenceName = "SEQ_SYS_RBAC_ROLE_RES", allocationSize = 1, initialValue = 1)
	@GeneratedValue(generator = "sequenceGenerator", strategy = GenerationType.SEQUENCE)
	@Column(name = "ID")
	public Integer getKey() {
		return key;
	}

	@ManyToOne
	public Role getRole() {
		return role;
	}

	@ManyToOne
	public Resource getResource() {
		return resource;
	}

	public void setKey(Integer key) {
		this.key = key;
	}

	public void setRole(Role role) {
		this.role = role;
	}

	public void setResource(Resource resource) {
		this.resource = resource;
	}
}

这是其中一张外键表,这里要配置对主表的双向关联,声明private Set<RoleResource> roleResource = new HashSet<RoleResource>() ; 属性,注解写上@JsonIgnore@OneToMany(mappedBy = "role", cascade = CascadeType.ALL),这里要设置级联属性,确保删除子表数据时,级联删除主表的数据;JsonIgnore是防止在对对象做一些json转换时出错

public class Role extends AbstractPersistence {

	private Integer key;

	private Set<RoleResource> roleResource = new HashSet<RoleResource>() ;

	@Id
	@Column(name = "ID")
	public Integer getKey() {
		return key;
	}

	@JsonIgnore
	@OneToMany(mappedBy = "role", cascade = CascadeType.ALL)
	public Set<RoleResource> getRoleResource() {
		return roleResource;
	}

	public void setRoleResource(Set<RoleResource> roleResource) {
		this.roleResource = roleResource;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值