Estou criando uma aplicação REST com Spring Boot 2 (sei que aqui não é de Spring, porem é de REST) e me fiquei preso no seguinte cenário:
Tenho 2 classes no meu Domain, que tem além de alguns métodos e atributos os seguintes:
@Entity
class Telefone
private String numeroDeTelefone;
@JsonBackReference
@ManyToMany(mappedBy = "telefones")
private List<PessoaFisica> pessoasFisicas = new ArrayList<>();
e uma classe PessoaFisica:
@Entity
class PessoaFisica extends Cliente
@JsonManagedReference
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "pessoafisica_telefone", joinColumns = @JoinColumn(name = "fk_pessoafisica"),inverseJoinColumns = @JoinColumn(name = "pk_telefone"))
private List<Telefone> telefones = new ArrayList<>();
com isso tenho um relacionamento de muitos para muitos entre PessoaFisica e Telefone. Sei que não é a modelagem correta, é somente para aprender como trabalhar com muitos para muitos.
Criei uma PessoaFisicaDTO, para ter os atributos de cliente e telefone.
E no PessoaFisicaService fiz o seguinte método;
public PessoaFisica recebeDTO(PessoaFisicaDTO pessoaFisicaDTO){
Cliente cliente = new PessoaFisica(parâmetros do construtor);
Telefone telefone = new Telefone(parâmetros do construtor);
telefone.getPessoaFisica().addAll(Arrays.asList(cliente));
((PessoaFisica)cliente).getTelefones().addAll(Arrays.asList(telefone));
}
Dessa forma eu consigo inserir no banco um cliente com um telefone. Mas o que eu gostaria era inserir um cliente com N telefones. Criar um array de telefones e inseri-los. Já tentei um foreach mas sem sucesso. Qual seria a maneira correta de fazer isso?