Java 休眠错误:无法删除或更新父行:外键约束失败
我试过很多方法。但它总是出错! 我有两个实体类:Role.java和RolePrivilege, 这是Role.java:Java 休眠错误:无法删除或更新父行:外键约束失败,java,hibernate,Java,Hibernate,我试过很多方法。但它总是出错! 我有两个实体类:Role.java和RolePrivilege, 这是Role.java: package com.taxsys.nsfw.role.entity; import java.io.Serializable; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; i
package com.taxsys.nsfw.role.entity;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name="role")
public class Role implements Serializable{
@Id
@GenericGenerator(name="pk_uuid", strategy="uuid")
@GeneratedValue(generator="pk_uuid")
@Column(name="role_id")
private String roleId;
@Column(name="role_name",length=32, nullable=false)
private String name;
@Column(name="state", length=1)
private String state;
@OneToMany(targetEntity=RolePrivilege.class,
mappedBy="role", cascade=CascadeType.ALL,
fetch=FetchType.EAGER)
private Set<RolePrivilege> rolePrivileges = new HashSet<>();
public static String ROLE_STATE_VALID = "1";
public static String ROLE_STATE_INVALID = "0";
public Set<RolePrivilege> getRolePrivileges() {
return rolePrivileges;
}
public void setRolePrivileges(Set<RolePrivilege> rolePrivilege) {
this.rolePrivileges = rolePrivilege;
}
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Role() {
}
public Role(String roleId, String roleName, String state, Set<RolePrivilege> rolePrivilege) {
super();
this.roleId = roleId;
this.name = roleName;
this.state = state;
this.rolePrivileges = rolePrivilege;
}
public Role(String roleId) {
this.roleId = roleId;
}
}
看看我的Role.java。已指定属性“cascade=CascadeType.ALL”。
角色表示程序中的主表。但当我尝试从角色中删除数据时,出现错误
15:14:29,905 ERROR [http-bio-8425-exec-4] JDBCExceptionReporter:234 - Cannot delete or update a parent row: a foreign key constraint fails (`itcasttax`.`role_privilege`, CONSTRAINT `FK45FBD62836249906` FOREIGN KEY (`role_id`) REFERENCES `role` (`role_id`))
但是在Role.java中,我指定了cascade!我真的不明白为什么我仍然不能删除主表。使用下面的代码
@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, mappedBy = "role")
@Cascade(value = { CascadeType.SAVE_UPDATE, CascadeType.DELETE })
@Fetch(FetchMode.SELECT)
private Set<RolePrivilege> rolePrivileges
@OneToMany(fetch=FetchType.EAGER,orphandremovation=true,mappedBy=“role”)
@级联(值={CascadeType.SAVE_UPDATE,CascadeType.DELETE})
@Fetch(FetchMode.SELECT)
私人角色特权
使用下面的代码
@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, mappedBy = "role")
@Cascade(value = { CascadeType.SAVE_UPDATE, CascadeType.DELETE })
@Fetch(FetchMode.SELECT)
private Set<RolePrivilege> rolePrivileges
@OneToMany(fetch=FetchType.EAGER,orphandremovation=true,mappedBy=“role”)
@级联(值={CascadeType.SAVE_UPDATE,CascadeType.DELETE})
@Fetch(FetchMode.SELECT)
私人角色特权
的可能重复,的可能重复,但仍然不正确。与上一次相同的一致性…我使用hibernate 3.6,但仍然不正确。与上一次相同的一致性…我使用hibernate 3.6