boa noite tenho que adicionar uma id de uma tabela que que vem de outra como fk mas não estou conseguindo gostaria que me ajudassem segue abaixo meu código e se alguém tiver uma forma mais elegante em um exemplo gostaria de ver ok.
` /*Cliente clie = new Cliente();
Date d = new Date();
clie.setNome("Gabriel Yosef");
clie.setNascimemto(d);
clie.setRg(1234);
clie.setCpf(749671687);
ClienteDao dao = new ClienteDao();
dao.Cadastar(clie);
*/
ClienteDao clientedao = new ClienteDao();
Cliente cli = clientedao.buscaPorcpf(749671687);
Integer n =cli.getId();
Endereco end = new Endereco();
end.setRua("acapu");
end.setNumero(23);
end.setBairro("aeroporto");
end.setEstado("pará");
end.setCep(123);
end.setObservsacao("cadastro novo");
end.setCliente(n);
EnderecoDao enderecodao = new EnderecoDao();
enderecodao.CadastarEndereco(end);
`
esta é minha classe clientedao
`package br.com.clinicaAlmeida.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import br.com.clinicaAlmeida.entity.Cliente;
public class ClienteDao {
Connection con = Conexao.getConnection();
public void Cadastar(Cliente cliente){
String sql = "INSERT INTO clientes (nome, nascimemto, rg, cpf) VALUES (?,?,?,?)";
try{
PreparedStatement stm = con.prepareStatement(sql);
stm.setString(1, cliente.getNome());
stm.setDate(2, new java.sql.Date(cliente.getNascimemto().getTime()));
stm.setInt(3, cliente.getRg());
stm.setInt(4, cliente.getCpf());
stm.execute();
stm.close();
System.out.println("Gravado com sucesso!!");
}catch(SQLException e){
e.printStackTrace();
}
}
public Cliente buscaPorcpf(int cpf){
String sql = "SELECT *FROM CLIENTES WHERE cpf=?";
Cliente cliente = null;
try {
PreparedStatement stm = con.prepareStatement(sql);
stm.setInt(1, cpf);
ResultSet rs = stm.executeQuery();
if(rs.next()){
cliente = new Cliente();
cliente.setId(rs.getInt("id"));
cliente.setNome(rs.getString("nome"));
cliente.setNascimemto(rs.getDate("nascimemto"));
cliente.setRg(rs.getInt("rg"));
cliente.setCpf(rs.getInt("cpf"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return cliente;
}
}
`
esta ultima é a minha classe enderecodao
`package br.com.clinicaAlmeida.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import br.com.clinicaAlmeida.entity.Endereco;
public class EnderecoDao {
Connection con = Conexao.getConnection();
public void CadastarEndereco(Endereco endereco){
String sql = "INSERT INTO endereco (id, rua, numero, bairro, estado, cep, observacao) VALUES (?,?,?,?,?,?,?)";
try{
PreparedStatement stm = con.prepareStatement(sql);
stm.setString(1, endereco.getRua());
stm.setInt(2, endereco.getNumero());
stm.setString(3, endereco.getBairro());
stm.setString(4, endereco.getEstado());
stm.setInt(5, endereco.getCep());
stm.setString(6, endereco.getObservsacao());
stm.setInt(7, endereco.getCliente());
stm.execute();
stm.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
`
e esse é o erro que tenho:
org.postgresql.util.PSQLException: ERROR: column “id” is of type integer but expression is of type character varying
Dica: You will need to rewrite or cast the expression.
Posição: 81
