Select item in JCombobox and return associated value in JTextField in JPA

0

I try several times in a Swing form so that when selecting the option in the JCombobox the column item value of the same row appears in the JTextField. Once I was able to do this logic however it was with JDBC and some functions that I used for this purpose I did not keep in the DAO interface doing them in the mouseClicked JComboBox event itself. They looked like this:

MySQLProductData class:

public class MySQLProdutoDAO implements ProdutoDAO {

    private ConnectionFactory cf = null;

    public MySQLProdutoDAO(ConnectionFactory cf) {
        this.cf = cf;
    }
    
    
    /*  Métodos inserir, alterar e excluir */
    
    @Override
    public List<Produto> listar() {
        cf = new ConnectionFactory();
        cf.createEm().getTransaction().begin();
        //pedido = *, Pedido = nome da tabela
        Query consulta = cf.createEm().createQuery("select produto from Produto produto");
        List<Produto> produtos = consulta.getResultList();
        cf.createEm().getTransaction().commit();
        cf.close();
        return produtos;
    }
    
    public List<Produto> pesquisarPorNome(String nomeProduto){
        String jpql = "select nomeProduto from Produto p where nomeProduto = :name";
        List<Produto> produtos =  cf.createEm().createQuery(jpql).setParameter("name", nomeProduto).getResultList();
        return produtos;
    }
    /* tentei usar a lógica do select nomeProduto from Produto where nomeProduto = 'Produto A' para que ele exiba o nome do produto na coluna do banco e compare com o valor que o cliente escolheu; */
    
    public List receberValorUnitario(String nomeProduto){
        String jpql = "select valorUnitario from Produto p where nomeProduto = :produto";
        List valor = cf.createEm().createQuery(jpql).setParameter("produto", nomeProduto).getResultList();
        return valor;
    }
    /* e aqui para exibir o valor correspondente se a lógica acima produto selecionado == produto consultado no banco esteja correta retornando o respectivo valor em float */ 
    
}

And in the Swing form ViewPrices:

public class ViewPedidos extends javax.swing.JInternalFrame {

    /*   Atributos, getters, setters */
    
    public ViewPedidos(DAOManager manager) throws DAOException {
        initComponents();
        atualizarTabela(manager);
        habilitarTextFieldEBotoes();
        List<Cliente> clientes = new ArrayList<Cliente>();
        List<Produto> produtos = new ArrayList<Produto>();
        clientes = manager.getClienteDAO().listar();
        produtos = manager.getProdutoDAO().listar();
        cbCodCliente.setModel(new DefaultComboBoxModel(clientes.toArray()));
        cbNomeProduto.setModel(new DefaultComboBoxModel(produtos.toArray()));
    }
    
    /* ....... */
    
    private void cbNomeProdutoActionPerformed(java.awt.event.ActionEvent evt) {                                              
      /* Exemplo realizado em JDBC */
         try {
        
        Connection con1 = DriverManager.getConnection("jdbc:mysql://localhost:3306/loja","root","");
        Statement stm1 = con1.createStatement();
        ResultSet rs1 = stm1.executeQuery("SELECT * FROM produto WHERE nomeProduto = '" + this.cbNomeProduto.getSelectedItem() + "'");
        while(rs1.next()){
            tfValor.setText(String.valueOf(rs1.getFloat("valorUnitario")));
        }
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, ex);
    }    
} 
    
 
}

Bank:

+----+-------------+---------------+
| id | nomeProduto | valorUnitario |
+----+-------------+---------------+
|  1 | Produto A   |         32.44 |
|  2 | Produto B   |          75.5 |
|  3 | Produto C   |         12.99 |
|  4 | Produto D   |         15.84 |
|  5 | Produto E   |          25.5 |
|  6 | Produto F   |          5.59 |
|  7 | Produto G   |          9.99 |
|  8 | Produto H   |         45.59 |
|  9 | Produto I   |         22.51 |
+----+-------------+---------------+

I already tried to get the value selected by the user, compare with the field of the database productName to print the value in the JTextField and even then I could not. What I want is to make the time the user select the product in the JComboBox to display the value in the JTextField next (unit value) in JPA. Example: When "Product A is selected in the cbProductName the value displayed in the JTextField is 32.44 (float).

    
asked by anonymous 09.04.2017 / 04:56

0 answers