Salvar chave estrangeira no banco usando JComboBox

21/04/2018

0

Ola tenho um problema na hora de salvar cliente no campo JComboBox, estou conseguindo listar os nomes do cliente no combobox porem na hora de salva nao salva da um erro.
Hibernate: select this_.codigo as codigo1_1_0_, this_.bairro as bairro2_1_0_, this_.celular as celular3_1_0_, this_.cep as cep4_1_0_, this_.cnpj as cnpj5_1_0_, this_.cpf as cpf6_1_0_, this_.nome as nome7_1_0_, this_.numero as numero8_1_0_, this_.rua as rua9_1_0_, this_.telefone as telefon10_1_0_ from Cliente this_
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to model.domain.Cliente.
@Entity
public class Agenda extends GenericDomain {
    @Temporal(TemporalType.DATE)
    @Column(length = 10, nullable = false)
    private Date dia;
    @Column(length = 5, nullable = false)
    private String hora;
    @ManyToOne
    @JoinColumn(nullable = false)
    private Cliente cliente;

    public Date getDia() {
        return dia;
    }

    public void setDia(Date dia) {
        this.dia = dia;
    }

    public String getHora() {
        return hora;
    }

    public void setHora(String hora) {
        this.hora = hora;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

}



//Classe DAO 
public class GenericDAO<Entidade> {

    final Class<Entidade> classe;

    public GenericDAO() {
        this.classe = (Class<Entidade>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
    }

    public void salvar(Entidade entidade) {
        Session sessao = HibernateUtil.getSessionFactory().openSession();
        Transaction transacao = null;
        try {
            transacao = sessao.beginTransaction();
            sessao.save(entidade);
            transacao.commit();
            JOptionPane.showMessageDialog(null, "Salvo com sucesso");
        } catch (Exception e) {
            if (transacao != null) {
                transacao.rollback();
                throw e;
            }
        } finally {
            sessao.close();
        }
    }

    public List<Entidade> listar() {
        Session sessao = HibernateUtil.getSessionFactory().openSession();
        try {
            Criteria consulta = sessao.createCriteria(classe);
            List<Entidade> resultado = consulta.list();

            return resultado;
        } catch (HibernateException e) {
            throw e;
        } finally {
            sessao.close();
        }

    }

    public Entidade buscarCodigo(Long codigo) {
        Session sessao = HibernateUtil.getSessionFactory().openSession();
        try {
            Criteria consulta = sessao.createCriteria(classe);
            consulta.add(Restrictions.idEq(codigo));
            Entidade resultado = (Entidade) consulta.uniqueResult();
            return resultado;
        } catch (HibernateException e) {
            throw e;
        } finally {
            sessao.close();
        }

    }

    public void excluir(Entidade entidade) {
        Session sessao = HibernateUtil.getSessionFactory().openSession();
        Transaction transacao = null;
        try {
            transacao = sessao.beginTransaction();
            sessao.delete(entidade);
            transacao.commit();
        } catch (Exception e) {
            if (transacao != null) {
                transacao.rollback();
                throw e;
            }
        } finally {
            sessao.close();
        }
    }

    public void editar(Entidade entidade) {
        Session sessao = HibernateUtil.getSessionFactory().openSession();
        Transaction transacao = null;
        try {
            transacao = sessao.beginTransaction();
            sessao.update(entidade);
            transacao.commit();
        } catch (Exception e) {
            if (transacao != null) {
                transacao.rollback();
                throw e;
            }
        } finally {
            sessao.close();
        }
    }

}



//Classe TesteDAO
public class AgendaDAOTeste {

    @Ignore
    @Test
    public void salvar() throws ParseException {
        AgendaDAO dao = new AgendaDAO();
        Long codigo = 1L;
        ClienteDAO cdao = new ClienteDAO();
        Cliente cliente = cdao.buscarCodigo(codigo);

        Agenda agenda = new Agenda();
        agenda.setCliente(cliente);
        agenda.setDia(new SimpleDateFormat("dd/MM/yyyy").parse("20/11/2018"));
        agenda.setHora("10:00");
        dao.salvar(agenda);
    }

    @Ignore
    @Test
    public void buscaData() {

        AgendaDAO dao = new AgendaDAO();
        List<Agenda> resultado = dao.buscaAgenda(11);

        for (Agenda a : resultado) {

            System.out.println(a.getCliente().getNome());
            System.out.println(a.getDia());

        }
    }

    @Ignore
    @Test
    public void lista() {
        AgendaDAO dao = new AgendaDAO();
        List<Agenda> resultado = dao.listar();

        for (Agenda a : resultado) {

            System.out.println(a.getCliente().getNome());
            System.out.println(a.getDia());
        }
    }

    @Ignore
    @Test
    public void buscarCodigo() {
        Long codigo = 1L;
        AgendaDAO dao = new AgendaDAO();

        Agenda agenda = dao.buscarCodigo(codigo);
        System.out.println(agenda.getCliente().getNome());
        System.out.println(agenda.getCliente().getCpf());
        System.out.println(agenda.getDia());
        System.out.println(agenda.getHora());
    }

    @Ignore
    @Test
    public void excluir() {
        Long codigo = 2L;
        AgendaDAO dao = new AgendaDAO();

        Agenda agenda = dao.buscarCodigo(codigo);
        dao.excluir(agenda);
    }
    @Ignore
    @Test
    public void editar() throws ParseException {

        Long codigo = 3L;
        Long cc = 1L;
        AgendaDAO dao = new AgendaDAO();
        Agenda agenda = dao.buscarCodigo(codigo);

        ClienteDAO cdao = new ClienteDAO();
        Cliente cliente = cdao.buscarCodigo(cc);

        agenda.setCliente(cliente);
        agenda.setDia(new SimpleDateFormat("dd/MM/yyyy").parse("29/04/2018"));
        agenda.setHora("14:00");

        dao.editar(agenda);
    }
}


//Onde lista os dados no JComboBox
public void preencherCliente() {
        DefaultComboBoxModel model = new DefaultComboBoxModel();
        List<Cliente> lista = cdao.listar();

        for (Cliente cliente : lista) {
            model.addElement(cliente.getNome());

        }
        jcombo_cliente.removeAllItems();
        jcombo_cliente.setModel(model);

    }
}


//Onde tem a ação de salva
private void btn_salvarActionPerformed(java.awt.event.ActionEvent evt) {                                           

        agenda.setDia(jdt_data.getDate());
        agenda.setHora(jft_hora.getText());
        agenda.setCliente((Cliente) jcombo_cliente.getSelectedItem());
        JOptionPane.showMessageDialog(null, jcombo_cliente.getSelectedItem());
        dao.salvar(agenda);


    }  
Flavio Fontes

Flavio Fontes

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar