Erro ao tentar excluir foreign key usando Hibernate.(mapeamento)

3 respostas
jsfhibernatejavamysql
E

Pessoal, estou tentando excluir um fornecedor ja tentei fazer como alguns post e não funcionou, aparece o erro abaixo:

ERROR: Cannot delete or update a parent row: a foreign key constraint fails (banco.fornecedor, CONSTRAINT FK_7bnjd2tyey5s8d56symbi7c2l FOREIGN KEY (endereco_codigo) REFERENCES endereco (codigo))

Tentei modificando o Cascade como por exemplo;

@ManyToOne(cascade=CascadeType.PERSIST) ou ALL, tambem nao funcionou.


Classe Empresa.java

@MappedSuperclass
public class Empresa extends GenericDomain {    

private static final long serialVersionUID = 1L;

@ManyToOne
@JoinColumn(nullable = true)
private Endereco endereco;`

Classe Fornecedor.java

public class Fornecedor extends Empresa {

    @Column(name="responsavel_legal", length = 60, nullable = false)
private String responsavelLegal;

@Column(name="status", nullable = false)
private Boolean status;

Classe Endereco.java

public class Endereco extends GenericDomain {

private static final long serialVersionUID = 1L;

@Column(name="rua", length = 60, nullable = false)
private String rua;

@Column(name="numero", length = 4, nullable = false)
private Integer numero;
    
@ManyToOne
@JoinColumn(nullable = false)
private Cidade cidade;`

FornecedorBean

public void excluir(ActionEvent evento) {
    try {
        fornecedor = (Fornecedor) evento.getComponent().getAttributes().get("fornecedorSelecionado");

        FornecedorDAO fornecedorDAO = new FornecedorDAO();

            EnderecoDAO enderecoDAO = new EnderecoDAO();
            
            endereco = fornecedor.getEndereco();
        
            enderecoDAO.excluir(endereco);
            fornecedorDAO.excluir(fornecedor);

            listar();
            novo();
            listarEstados();

            Messages.addGlobalInfo("Fornecedor removido com sucesso!");
        
    } catch (RuntimeException erro) {
        Messages.addFlashGlobalError("Ocorreu um erro ao tentar remover o fornecedor!");
        erro.printStackTrace();
    }
}

3 Respostas

igomes

Do jeito que vc quer eu acho que é o Cascade remove

E

@igomes, Infelizmente continua com o mesmo erro.

E

Tive a solução parcial do problema, consegui excluir o fornecedor após comentar esta linha no FornecedorBean;
// enderecoDAO.excluir(endereco);
porem neste caso precisaria excluir o registro da tabela Endereco, onde continua dando o erro permanece.

Criado 1 de agosto de 2016
Ultima resposta 1 de ago. de 2016
Respostas 3
Participantes 2