Fórum Salvar chave estrangeira no banco usando JComboBox #592657
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.
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)