Prezados,
Estou desenvolvendo uma aplicaçao java Web, que contem duas tabelas (fornecedor,produto).
Estou conseguindo cadastrar na tabela fornecedor numa boa, agora quando tento gravar na tabela produto gera o erro abaixo:
EXCESSÃO: MySQLIntegrityConstraintViolationException
MENSAGEM: Cannot add or update a child row: a foreign key constraint fails (estoque/produto
, CONSTRAINT produto_ibfk_1
FOREIGN KEY (idFornecedor
) REFERENCES fornecedor
(id
))
Estruturas das tabelas criadas:
CREATE TABLE fornecedor(
id int(10) unsigned NOT NULL AUTO_INCREMENT,
nome varchar(50) NOT NULL,
cnpj long NOT NULL,
email varchar(50) NOT NULL,
telefone varchar(20) NOT NULL,
PRIMARY KEY (id));
CREATE TABLE produto (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
nome varchar(50) NOT NULL,
marca varchar(50) NOT NULL,
quantidadetotal int(10) unsigned DEFAULT NULL,
preco float NOT NULL,
idFornecedor int(10) unsigned NOT NULL,
PRIMARY KEY (id),
KEY fk_produto_fornecedor (idFornecedor),
CONSTRAINT fk_produto_fornecedor FOREIGN KEY (idFornecedor) REFERENCES fornecedor (id));
Segue o metodo inserir das classes DAO:
public class FornecedorDAO {
private Connection con;
public FornecedorDAO() throws SQLException {
this.con = ConnectionFactory.getConnection();
}
public int incluir( FornecedorBean fornecedor) throws SQLException {
if (fornecedor == null) return 0;
PreparedStatement stmt = con.prepareStatement("INSERT INTO Fornecedor (nome, cnpj, email, telefone) values (?, ?, ?, ?)");
stmt.setString(1, fornecedor.getNome());
stmt.setLong(2, fornecedor.getCnpj());
stmt.setString(3, fornecedor.getEmail());
stmt.setString(4, fornecedor.getTelefone());
int retorno = stmt.executeUpdate();
stmt.close();
return retorno;
}
public class ProdutoDAO {
private Connection con;
public ProdutoDAO() throws SQLException {
this.con = ConnectionFactory.getConnection();
}
public int incluir(ProdutoBean produto) throws SQLException {
if (produto == null) return 0;
PreparedStatement stmt = con.prepareStatement("INSERT INTO Produto (nome, marca, quantidadetotal, preco, idFornecedor) values (?, ?, ?, ?, ?)");
stmt.setString(1, produto.getNome());
stmt.setString(2, produto.getMarca());
stmt.setInt(3, produto.getQuantidadetotal());
stmt.setFloat(4, produto.getPreco());
stmt.setLong(5, produto.getFornecedor().getId());
int retorno = stmt.executeUpdate();
stmt.close();
return retorno;
}
Me ajudem, ja procurei na net ajuda mais nao encontrei nada.
Atta