Estou com um uma dúvida. Na minha aplicação simples, eu relaciono duas classes assim como no banco de dados. Porém meu método de salvar está com RETURN_GENERATED_KEYS não retorna justamente o campo que faz ligação com a outra classe. Embora ele salve no banco de dados, ele não retorna esse resultado e toda vez eu tenho que reiniciar o tomcat pra ele exibir. Também fiz o teste com o Junit, ele retorna null nesse campo.
public void salvar(Produtos p) {
try {
Connection conectar = ConnectionFactory.conectar();
PreparedStatement ps = null;
String sql = "insert into produtos (descricao, fornecedor, preco, quantidade) values (?, ?, ?, ?)";
ps = conectar.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
ps.setString(1, p.getDescricao());
ps.setInt(2, p.getFornecedor().getIdfornecedores());
ps.setDouble(3, p.getPreco());
ps.setInt(4, p.getQuantidade());
ps.executeUpdate();
ResultSet rs = ps.getGeneratedKeys();
if(rs.next()) {
p.setIdprodutos(rs.getInt(1));
}
} catch (Exception e) {
e.printStackTrace();
}
}
Veja meu código para testar no Junit
public void salvar() {
Produtos p = new Produtos();
Fornecedores f = new Fornecedores();
p.setDescricao("Teste17");
f.setIdfornecedores(25);
p.setFornecedor(f);
p.setPreco(15.90);
p.setQuantidade(50);
pdao.salvar(p);
System.out.println("id: "+p.getIdprodutos());
System.out.println("descricao:"+p.getDescricao());
System.out.println("fornecedor: "+p.getFornecedor().getDescricao());
System.out.println("preco: "+p.getPreco());
System.out.println("qtde: "+p.getQuantidade());
}