Como retornar Generated Keys com relacionamento de classes?

26/12/2020

3

Olá pessoal, 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 quando peço para puxar a descrição.

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()); //faz a ligacao com a outra classe
            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();
		}
		
	}


Minha classe Junit como exemplo:
@Test
	public void salvar() {
		Produtos p = new Produtos();
		Fornecedores f = new Fornecedores();
		p.setDescricao("Teste12");
		f.setIdfornecedores(6);
		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());
		
	}
Thiago Souza

Thiago Souza

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar