Olá a todos. tenho o seguinte problema.
Tenho a classe A que pode ter um numero indeterminado de instancias da classe B.
Exemplo: no formulario de cadastro o usuario ira definir quantos telefones irá cadastrar.
Pra isso uma terceira classe, instancia A, instancia B e depois faz referencia de FK entre as duas.
Se for manualmente, consigo fazer, exemplo:
ClasseA classeA = new ClasseA (parametros do construtor.)
ClasseB classeB = new ClasseB(parametros do construtor.).
Acontece que dessa forma há um numero definidos da ClasseB (nesse caso UMA apenas.)
Queria algo indefinido.
Tentei um foreach mas sem sucesso. Alguém pode ajudar?
Entao vai adicionando normalmente. Mas dessa forma tenho que informar quantas classesB serão.
Exemplo:
ClasseA classeA = new ClasseA (parametros do construtor.)
ClasseB classeB = new ClasseB(parametros do construtor.).
ClasseB classeB2 = new ClasseB(parametros do construtor.).
ClasseB classeB3 = new ClasseB(parametros do construtor.).
E nao queria dessa forma. Queria com foreach pois assim nao precisso definir o numero de instancias “na mão” como nesse exemplo, 3 istancias de classeB. Queria algo do tipo
A dúvida é que nao estou conseguindo salvar mais de um telefone. como explicado acima.
Eu sei que vou receber um array, porém nao consigo criar objetos telefone de acordo com o numero de telefones passados.
Estou me perdendo nisso. Sei apenas criar UM telefone.
Voce deu a dica
classeA.getClasseB().add(new ClasseB(…));
porem como farei
classeB.getClasseA().add(new ClasseA()); sendo que o numero de classeB é variavel. pode ser 1 ou podem ser 4, ou 3.
Estou me perdendo nessa parte.
perceba que no codigo que passei, apenas um é instanciado:
essa linha:
Telefone telefone = new Telefone(pessoaFisicaDTO.getNumeroDeTelefone());
Entendi o que você está fazendo de errado.
Primeiro, adeque as classes Cliente e PessoaDTO e defina não apenas um, mas uma lista de telefones.
Então isso
Pode passar para isso
Depois, ao invés disso:
Itere sobre a lista e vá inserindo os telefones no array.
String numeroTelefone
mudei para
private List < Telefone > telefones;
e criei o metodo:
public void adicionaTelefoneLista(String numeroTelefone){
telefones.add(new Telefone(numeroTelefone);
}
ai na classe service ao invés desse codigo no metodo de inserir, que tem como parametro pessoaFisicaDTO:
Telefone telefone = new Telefone(pessoaFisicaDTO.getNumeroDeTelefone());
coloquei
foreach(Telefone x : pessoaFisicaDTO.adicionaTelefoneLista()){
((PessoaFisica) cliente).getTelefones().addAll(Arrays.asList(x));
x.getPessoasFisicas().addAll(Arrays.asList((PessoaFisica) cliente));
}