Bom dia galera,
eu tenho o seguinte mapeamento bilateral OneToMany
e ManyToOne
:
Pessoa
:
@Entity
@Table(name = "tb_pessoa")
public class Pessoa implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_tb_pessoa")
private Integer id;
private String nome;
@OneToMany(mappedBy = "pessoa", cascade = {CascadeType.PERSIST})
private List<Contato> contatos;
}
Contato
:
@Entity
@Table(name = "tb_contato")
public class Contato implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id_tb_contato")
private Integer id;
@ManyToOne
@JoinColumn(name = "fk_tb_pessoa", nullable = false)
private Pessoa pessoa;
private String descricao;
}
A minha dúvida é a seguinte, quando é tento persistir pelo lodo fraco do relacionamento Pessoa
da seguinte forma:
Contato c = new Contato();
c.setDescricao("(99) 99999-9999");
Pessoa p = new Pessoa();
p.setNome("Fulano");
p.contatos.add(c);
tenho uma ConstraintViolationException
, ou seja, estou violando uma restrição porque eu não posso adicionar um contato sem uma pessoa.
Para resolver isso tenho que setar a pessoa do meu contato manualmente assim:
Contato c = new Contato();
c.setDescricao("(99) 99999-9999");
Pessoa p = new Pessoa();
p.setNome("Fulano");
//Setando manualmente
c.setPessoa(p);
p.contatos.add(c);
Tem alguma forma que eu possar automatizar isso, sem precisar ter que setar a pessoa manualmente?
Espero ter sido claro, Desde já obrigado pelas respostas.