Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠错误:无法删除或更新父行:外键约束失败_Java_Hibernate - Fatal编程技术网

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

我试过很多方法。但它总是出错! 我有两个实体类: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;
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