Pessoal to com um problema aqui.
O meu modelo é o seguinte:
Tenho uma classe ADVOGADO que esta relacionada a classe DEPENDENTE em 1-N. A classe ADVOGADO tambem esta relacionada em 1-N com a classe FICHA. Por outro lado a classe FICHA tambem tem relacao com DEPENDENTE em N-N, com isso gerou se outra classe FICHADEPENDENTE para mapear este relacionamento no Hibernate.
Tenho um formulario JFrameDependente, onde faço a manipulação dos dados, quando vou salvar um dependente acontece o seguinte erro:
Hibernate: insert into Dependente (id, Advogado_id, cpf, dataNascimento, estadoCivil, inscricaoUnimed, nome, nomeMae, rg, sexo, tipo) values (null, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
14:35:02,593 WARN JDBCExceptionReporter:77 - SQL Error: 1054, SQLState: 42S22
14:35:02,593 ERROR JDBCExceptionReporter:78 - Unknown column ‘inscricaoUnimed’ in 'field list’
Exception in thread “AWT-EventQueue-0” org.hibernate.exception.SQLGrammarException: could not insert: [br.com.caaspunimed.dominio.Dependente]
o codigo para salvar dependentes é o seguinte:
dependente = new Dependente();
dependente.setNome(jtfNome.getText());
dependente.setTipo(jcbTipo.getModel().getSelectedItem().toString());
dependente.setDataNascimento(dataNasc);
dependente.setCpf(jftCpf.getText());
dependente.setRg(jtfRg.getText());
dependente.setNomeMae(jtfNomeMae.getText());
dependente.setSexo(jcbSexo.getSelectedItem().toString());
dependente.setEstadoCivil(jtfEstadoCivil.getText());
dependente.setInscricaoUnimed(jtfUnimed.getText());
//o objeto advogado ja foi recuperado em outro evento
dependente.setAdvogado(advogado);
advogado.setDependentes(new HashSet());
advogado.getDependentes().add(dependente);
AdvogadoDAO advDAO = new AdvogadoDAO();
advDAO.salvar(advogado);
JOptionPane.showMessageDialog(this, "Dependente Salvo com Sucesso!");
Segue abaixo os codigos:
@Entity
public class Ficha implements Serializable{
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
private int id;
@Temporal(TemporalType.DATE)
private Date dataEmissao;
private int tipo;
@ManyToMany (fetch=FetchType.LAZY)
@JoinTable ( name="Ficha_has_Dependente",joinColumns={@JoinColumn(name="Ficha_id")},inverseJoinColumns={@JoinColumn(name="Dependente_id")} )
private Collection<Dependente> dependentes;
@ManyToOne (fetch=FetchType.EAGER)
@JoinColumn (name="Advogado_id", insertable=true, updatable=true)
@Fetch (FetchMode.JOIN)
@Cascade (CascadeType.SAVE_UPDATE)
private Advogado advogado;
@Entity
@Entity
public class Dependente implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private int id;
private String tipo;
private String nome;
@Temporal (TemporalType.DATE)
private Date dataNascimento;
private String nomeMae;
private String cpf;
private String rg;
private String sexo;
private String estadoCivil;
private String inscricaoUnimed;
@ManyToOne (fetch= FetchType.EAGER)
@JoinColumn (name="Advogado_id", insertable=true, updatable=true)
@Fetch (FetchMode.JOIN)
@Cascade (CascadeType.SAVE_UPDATE)
private Advogado advogado;
@ManyToMany (fetch=FetchType.LAZY)
@JoinTable( name="Ficha_has_Dependente", joinColumns={@JoinColumn(name="Dependente_id")}, inverseJoinColumns={@JoinColumn(name="Ficha_id")} )
private Collection<Ficha> fichas;
public class DependenteDAO {
Session session = null;
public void DependenteDAO(){
}
public void salvar(Dependente dep){
session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
//session.save(dep);
session.saveOrUpdate(dep);
session.getTransaction().commit();
}
}
@Entity
public class Advogado implements Serializable {
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
private int id;
private String nome;
private int oab;
private String endereco;
private String cidade;
private String telefone;
private String cep;
@Temporal(TemporalType.DATE)
private Date dataNascimento;
private String nomeMae;
private String cpf;
private String rg;
private String sexo;
private String estadoCivil;
private String profissao;
private String incricaoUnimed;
@OneToMany (mappedBy="advogado", fetch= FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection<Dependente> dependentes;
public class AdvogadoDAO {
private Session session;
public void AdvogadoDAO(){
}
public void salvar(Advogado adv){
session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
//session.save(adv);
session.saveOrUpdate(adv);
session.getTransaction().commit();
/*não precisa ser fechado, porque o metodo getCurrentSession retorna
*a session corrente, e toda vez que é dado um comit ou roolback o
*hibernate fecha automaticamente a session.
*/
//session.close();
}
public List getByOab(String numOab){
session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query select = session.createQuery("from Advogado as adv where adv.oab = :oab");
select.setString("oab", numOab);
List objetos = select.list();
session.getTransaction().commit();
return objetos;
}
}
public class FichaDependente {
private int idFicha;
private int idDependente;
}
não sei o q possa ser, aguem poderia me ajudar.