Como retornar Generated Keys com relacionamento de classes?

0 respostas
mysqljava
T

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());
		
	}
Criado 26 de dezembro de 2020
Respostas 0
Participantes 1