Galera estou desenvolvendo uma aplicação e estou cadastrando cliente e junto com o cliente cadastro também o endereço, só que precisa de uma dica, no banco de dados criei duas tabelas,uma chamada cliente e a outra endereço e fiz um relacionamento do cliente com o endereço, o problema é q na minha aplicação javafx não estou conseguindo puxar os dados do endereço.
ConnectionPGSQL conex = new ConnectionPGSQL();
public void Salvar(ClienteBEAN cliente){
conex.Conectar();
try {
PreparedStatement stmt = conex.con.prepareStatement("insert into clientes(nome,telefone,email,cpf,endereco_id) values(?,?,?,?,?)");
stmt.setString(1,cliente.getNome());
stmt.setString(2,cliente.getTelefone());
stmt.setString(3, cliente.getEmail());
stmt.setString(4,cliente.getCpf());
stmt.setInt(5,cliente.getEndereco().getIdEnd());
stmt.executeUpdate();
} catch (SQLException ex) {
System.out.println("ERRO "+ex);
}finally{
conex.Desconectar();
}
}
aqui está o meu codigo de como tou fazendo para puxar o id da tabela endereço e jogar na a minha tabela cliente com o nome da coluna de endereco_d.
o seguinte erro é mostrado: org.postgresql.util.PSQLException: ERROR: insert or update on table "clientes" violates foreign key constraint "clientes_endereco_id_fkey" Detalhe: Key (endereco_id)=(0) is not present in table "enderecos".
e aqui está o medo de como tou fazendo para salvar os dados no banco de dados:
public void SalvandoClienteNoBD(){
String nome = txtNomeCliente.getText().toUpperCase();
String telefone = txtTelefoneCliente.getText();
String email = txtEmailCliente.getText();
String cpf = txtCpfCliente.getText();
String estado = txtEstado.getText();
String cidade = txtCidade.getText();
String bairro = txtBairro.getText();
String rua = txtRua.getText();
String numero = txtNumero.getText();
if(nome.isEmpty()){
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setHeaderText("Por favor insira o nome do Cliente");
alert.setTitle("Nome não inserido");
alert.setContentText("Aperte OK Para continuar");
alert.show();
}else if(telefone.isEmpty()){
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setHeaderText("Por favor insira o telefone do Cliente");
alert.setTitle("Telefone não inserido");
alert.setContentText("Aperte OK Para continuar");
alert.show();
}else {
/*INSTANCIAS DAS CLASSES CLIENTES*/
ClienteDAO cdao = new ClienteDAO();
ClienteBEAN cliente = new ClienteBEAN();
/*INSTANCIAS DAS CLASSES ENDERECOS*/
EnderecoDAO edao = new EnderecoDAO();
EnderecoBEAN endereco = new EnderecoBEAN();
/*SALVANDO DADOS DO ENDERECO DO CLIENTE NO BANCO*/
endereco.setEstado(estado);
endereco.setCidade(cidade);
endereco.setBairro(bairro);
endereco.setRua(rua);
endereco.setNumero(numero);
edao.Salvar(endereco);
/*SALVANDO DADOS DO CLIENTE NO BANCO*/
cliente.setNome(nome);
cliente.setTelefone(telefone);
cliente.setEmail(email);
cliente.setCpf(cpf);
cliente.setEndereco(endereco);//ENDEREÇO QUE ESTA SENDO CHAMADO AQUI É O OBJETO DA CLASSE EnderecoBEAN.
cdao.Salvar(cliente);
/*MENSAGEM DE ALERTA AO USÚARIO AO SUCESSO AO CADASTRAR*/
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("Cliente Cadastrado com Sucesso");
alert.setTitle("Cadastrado");
alert.setContentText("Aperte OK Para continuar");
alert.show();
}
}
Desde já agradeço