Inserir de 1 para n em java server faces

4 respostas
J

Pessoa boa tarde sou novo aqui no forum e estou com uma grande duvida

estou utilizando o hibernate + jpa como framework de persistencia.

eu tenho uma tabela usuario que tem N telefones e estao em tabelas diferentes

no meu formulario como faço para preencher os valores do telefone
ex: posso cadastrar 2 telefones para 1 usuario

e no managed bean como faço para fazer essa lista de telefone e passar o idUsuario para a tabela telefone.
Alguem ai tem alguma dica???

Desde já muito obrigado

4 Respostas

Diabo_Loiro

cara não é no managedbeans que voce tem fazer o relacionamento é no JPA com anotations ou xml por exemplo @OneToMany etc… pesquisa sobre relacionamentos JPA que vai resolver seu problema.

dev.rafael

Se estiver usando JPA 1

Usuario u = new Usuario()
// ... sete os campos do objeto usuário (ex.: nome, endereço)

Telefone t1 = new Telefone();
Telefone t2 = new Telefone();
// ... sete os campos do objeto telefone.

u.getTelefones().add(t1);
u.getTelefones().add(t2);

Se estiver usando JPA 2 (e estiver usando @ElementCollection)

Usuario u = new Usuario();
// ... sete os campos do objeto usuário (ex.: nome, endereço)

u.getTelefones().add("3333333");
u.getTelefones().add("4444444");

Usando o JPA vc não precisa se preocupar em passar os ids para configurar os relacionamentos, basta vc preencher os
relacionamentos dos objetos (em Java) e deixar que o próprio framework transforme isso em um comando SQL adequado.

J

rapaz essa para do jpa e hibernate eu ja fiz

eu quero saber como vou fazer isso no meu formulario pq la no meu value do <H:inputText value=“usuarioController.usuario.telefones(o que faço aqui)”>

entendeu eu tenho 1 usuario com 2 campos de telefones

alguem ai pode ajudar???

dev.rafael

Cara, se forem apenas dois telefones basta colocar dois h:inputText, binda-los ao duas Strings do seu ManagedBean e usar um…

usuario.getTelefones().add(telefone1);
usuario.getTelefones().add(telefone2);

… deve ser o mais fácil.

Ou, se vc estiver utilizando o PrimeFaces como suite de componentes, ela possui um componente p:collector que permite que vc
manipule coleções de dados sem a necessidade de escrever código. É bem prático.

Agora se esse número é variável, então vc precisara pesquisar a sua suite de componentes por algum componente que tenha tal
recurso ou criar o seu próprio componente. Acredite, apesar do medo que muitos desenvolvedores tem de criar um Custom Component
como parte de um projeto, isso não é, exatamente, uma tarefa hiper complicada.

Criado 20 de agosto de 2010
Ultima resposta 23 de ago. de 2010
Respostas 4
Participantes 3