Pessoal, tenho duas classes Pessoa e Telefone relacionadas, na classe Pessoa tenho um List< Telefone > listaFones, Pessoa pode ter vários telefones. A minha dúvida seria em Editar, na minha pagina editar eu listo os dados de uma Pessoa com os telefones q foram cadastrados por ela.
Minha dúvida seria na classe DAO, como faço para pegar a variavel List “listaFones” ( Ex: ps.setListaFones(p.getListaFones()); ) e fazer referencia com a variável “numero” da classe Telefone?
#Classe DAO:
public void Update(Pessoa p){
EntityManager em = getEntityManager().createEntityManager();
Na minha pagina “editar.xhtml” eu recebo o nome da Pessoa e os telefones que foram cadastrados para essa pessoa. Ex: Pessoa tem 3 telefones cadastrados. No meu método Atualizar da classe DAO, queria saber como faço para pegar o List listaFones da minha classe Pessoa e instancia a variavel numero de telefone para receber os valores e atualizar. Verifica minhas classe que vc vai entender. Na minha classe DAO coloquei um comentário “Minha dúvida”, é onde está dando erro pois não consigo instanciar “números” da classe Telefone, queria saber como posso resolver isso?
Na página editar.xhtml, se eu altero o nome da pessoa e os telefones, apenas o nome da pessoa é atualizado, os números dos telefones continuam iguais. Esse é meu problema entendeu?
Vlw.
Valeu Felipe, mas meu objetivo é fazer com o @ManyToMany para obter conhecimentos de como desenvolver um CRUD com uma variável do tipo List, essa seria justamente a dúvida que eu tenho de como atualizar a variável List da classe Pessoa na minha classe DAO. O cadastro e a exibição dos dados conseguir fazer, mas não conseguir atualizar os campos. Como informei, se eu alterar o nome da pessoa é atualizado, porém se eu altero os números dos telefones eles não são atualizados.
Vlw.
Pelo que entendi, você quer que, ao atualizar o telefone no objeto pessoa, ele também seja atualizado no banco, é isso? Se for, existem duas formas, uma é usando o cascade (que você já utiliza, não sei porque não funciona) a outra é persistir os telefones de um a um.
Isso mesmo, estou querendo atualizar o telefone no objeto Pessoa, a exibição dos dados de Pessoa e Telefone conseguir fazer apenas pelo Objeto Pessoa. Não entendi quanto a persistir os telefones de um a um, seria informar o indice do List na minha pagina xhtml?Se for já fiz isso. Acredito que alterando a maneira de fazer a referência da classe Pessoa com Telefone na minha classe DAO resolva o problema.
Nenhum dos dois funcionou, eu estava mais preocupado com o List< Object > que nem me toquei no método “merge”, pois primeiro queria resolver o List< Object >, mas na verdade o JPA ele fica encarregado de tudo isso automaticamente. Resolvi o problema apenas um “em.merge§” e ele atualizou os dados da Pessoa e os respectivos telefones cadastrados. Vou verificar depois as dependências.
De qualquer forma agradeço pela atenção em resolver o problema.
Vlw.
Foi mal, era o merge mesmo kkkk, me atrapalhei. Quanto ao “automaticamente”, não é bem automaticamente não é bem assim. Na classe pessoa, no campo listaFones você colocou @ManyToMany(cascade=CascadeType.ALL). Esta anotação indica que todas (ALL) alterações na classe pai (Pessoa) irá refletir nas filhas (Telefone). Isso significa que ao você salvar, alterar ou remover uma pessoa, as mesmas alterações serão feitas nos telefones.