Olá amigos que falam Javanês!
Tenho a classe Cadastro com atributo do tipo classe Municipio e preciso passar a id desse municipio para uma query e
quando eu executo dá a seguinte mensagem:
ERRO: inserção ou atualização em tabela “cadastro” viola restrição de chave estrangeira “fk_cadastro_municipio”
Detalhe: Chave (cad_munid)=(0) não está presente na tabela “municipio”.
O método que contém a query é o seguinte:
public boolean alterar(Usuario usuario) throws SQLException{
try {
conexao = Conexao.conectar();
conexao.setAutoCommit(false);
StringBuffer sql1 = new StringBuffer();
StringBuffer sql2 = new StringBuffer();
sql1.append("UPDATE cadastro SET ");
sql1.append("cad_nome=?, ");
sql1.append("cad_email=?, ");
sql1.append("cad_telefone=?, ");
sql1.append("cad_cnpjcpf=?, ");
sql1.append("cad_rg=?, ");
sql1.append("cad_rua=?, ");
sql1.append("cad_complemento=?, ");
sql1.append("cad_numero=?, ");
sql1.append("cad_bairro=?, ");
sql1.append("cad_munid=?, ");
sql1.append("cad_cep=?, ");
sql1.append("cad_obs=? ");
sql1.append("where cad_id=? ");
PreparedStatement consulta1 = conexao.prepareStatement(sql1.toString());
usuario.setMunicipio(new Municipio());
consulta1.setString(1, usuario.getNome());
consulta1.setString(2, usuario.getEmail());
consulta1.setString(3, usuario.getTelefone());
consulta1.setString(4, usuario.getCnpjCpf());
consulta1.setString(5, usuario.getRg());
consulta1.setString(6, usuario.getRua());
consulta1.setString(7, usuario.getComplemento());
consulta1.setString(8, usuario.getNumero());
consulta1.setString(9, usuario.getBairro());
consulta1.setInt(10, usuario.getMunicipio().getId());
consulta1.setString(11, usuario.getCep());
consulta1.setString(12, usuario.getObs());
consulta1.setInt(13, usuario.getId());
consulta1.executeUpdate();
sql2.append("UPDATE usuario SET usu_login = ?, usu_senha = ?, usu_sts = ? WHERE usu_id = ?");
PreparedStatement consulta2 = conexao.prepareStatement(sql2.toString());
consulta2.setString(1, usuario.getLogin());
consulta2.setString(2, usuario.getSenha());
consulta2.setString(3, usuario.getStatus());
consulta1.setInt(4, usuario.getId());
consulta2.executeUpdate();
conexao.commit();
System.out.println("Transaction commit...");
conexao.setAutoCommit(true);
return true;
} catch (Exception e) {
if(conexao!=null){
conexao.rollback();
System.out.println("Connection rollback...");
}
e.printStackTrace();
return false;
}
}
Acho que o problema é esta linha:
consulta1.setInt(10, usuario.getMunicipio().getId());
Quem puder me ajudar, será de grande valia, pois sou iniciante e este projeto está atrasado.