Galera to na dúvida de como fazer uma persistência no JPA…
Tenho as Classes e suas respectivas tabelas, PessoaFisica e Dependentes
na Tabela e Classe Dependente possui uma chave estrangeira id_pessoa_fisica. O problema é:
Em uma tela cadastro normalmente a Pessoa Fisica e salvo, em outra tela busco essa pessoa cadastrada e quero cadastrar seus dependentes, coloquei as Entidades assim
@Entity
@Table(name = "pessoa_fisica")
public class PessoaFisica
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_pessoa_fisica", nullable = false)
private Integer idPessoaFisica;
@Column(nullable = false)
private String nome;
@Column(name = "data_nasc")
@Temporal(TemporalType.DATE)
private Date dataNasc;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "id_dependentes")
private List<Dependentes> dependentes;
}
@Entity
public class Dependentes
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_dependentes", nullable = false)
private Integer idDependentes;
@Column(nullable = false)
private String nome;
@Column(name = "data_nasc")
@Temporal(TemporalType.DATE)
private Date dataNasc;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "id_pessoa_fisica")
private PessoaFisica pessoaFisica;
}
Omitir o get e set…
To tentando fazer a persistência dos dependentes assim, busco os dados da PessoaFisica, crio um objeto da classe dependente e adiciono na List<Dependentes> dependentes em PessoaFisica como abaixo
PessoaFisica pessoaFisica = pessoaFisicaDAO.buscaPessoa(idSelecionado);
pessoaFisica.setIdPessoaFisica(idSelecionado);
List<Dependentes> lista = new ArrayList<Dependentes>();
lista.add(dependentes);
pessoaFisica.setDependentes(lista);
Depois faço um merge em PessoaFisica mas dá erro
javax.persistence.EntityExistsException: org.hibernate.exception.ConstraintViolationException: could not insert: [modelo.Dependentes
Alguém saberia como posso solucionar, fala que a coluna id_pessoa_fisica não é encontrada em Dependentes? to ficando doido com esse JPA… embora vá resolvendo aos poucos essas coisas… é muito melhor que fazer as consultas SQL