Pensei que não precisaria, visto qua já adicionei o converter no faces-config.xml
No entanto, já tinha tentado colocar no formulário como você disse e dá uma exception:
Editado:
Calma aí, deu essa exception porque eu tinha colocado de volta aquele itemValue="#{permissao.id}"
Tirei ele e agora não deixa salvar devido algum erro de validação, vou dar mais uma checada e retorno aqui.
[quote=kinks]Pensei que não precisaria, visto qua já adicionei o converter no faces-config.xml
No entanto, já tinha tentado colocar no formulário como você disse e dá uma exception:
Estamos ficando sem opções.
[/quote]
AAAA vc já tinha configurado lá então acontece o seguinte velho, o seu itemValue era um id lembra que pedi pra vc tirar do formulário algo como: itemValue="#{permissao.id}" então esse id é um inteiro e ele está indo para um argumento do método convert que aceita Strings, esse é o erro tente mudar o parametro do método converter para receber o value como, Integer value.
Mesmo assim vc tem que colocar <f:converter> para saber qual converter está sendo utilizado naquela situação.
Agora quando vou incluir um novo Perfil o formulário retorna o seguinte: "j_idt10:j_idt16: Erro de validação: o valor não é válido."
Se eu apenas dar um nome ao Perfil sem escolher permissões, ele salva.
E então pensei que poderia ser o charset do banco, visto que as palavras com ascento estavam “bagunçadas”.
Aí mudei o charset do banco para latin1 - pois é o que está definido em minhas páginas.
Agora os ascentos estão aparecendo corretamente, mas o erro de validação persiste.
O mais estranho é que a mensagem fala de dois componentes “j_idt10” e “j_idt16”. Inspecionei com o Firefox e existe apenas o “j_idt10” - que é o meu form. Já esse “j_idt16” não existe (componente fantasma rsrs). :shock:
E outra, quando vou alterar um perfil dá o seguinte erro no log:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection, could not initialize proxy - no Session
Velho vamos descomplicar se o problema está ai, pega e da uma permissão de usuario normal para cada usuário novo cadastrado e então depois se ele precisar de uma permissão de administrador ou de desenvolverdor vc da com um usuario administrador que vc pode dar permissão de administrador pelo banco para o 1º usário.
failed to lazily initialize a collection of role: entityBean.Perfil.permissoes, could not initialize proxy - no Session
Então cara, se pudesse já teria deixado isso de lado, além disso, no projeto existem diversos outros casos semelhantes a este. Se isso não funfar meu projeto fica parado. =/
Sei la velho é seu tcc não é? Não tem ninguém pra te auxilia na persistencia, eu nem minha faculdade não começei ainda só vai começar ano que vem =| , entra nesse blog www.uaihebert.com.br e lê o mini livro dele sobre JPA é mt bom.
Ter até tem uns caras, mas ficam com preguiça de ajudar, aí também não fico correndo atrás e tento me virar sozinho.
Vou continuar pesquisando e ler esse mini livro.
Cara, brigadão pela ajuda, mesmo!
Depois dessas alterações a inclusão de Perfil está funcionando corretamente.
Agora tenho apenas um erro quando vou alterar um Perfil:
Ainda sim já senti um alívio.
Ah, só pra informar, para gerar os IDs automaticamente não é necessário inserir o inputHidden no formulário. <h:inputHidden value="#{UsuarioBean.usuario.codigo}"/>
me mostra seus relacionamentos, tem algum relacionamento que busca uma lista e não é qualquercoisaToOne?
@LazyCollection(LazyCollectionOption.FALSE) retira isso da sua classe e perfil, essa exceção ocorre quando vc faz o que? Se for quando vc faz alguma pesquisa, poste suas classes DAO.
Por enquanto, o único relacionamento que tenho mesmo é esse ManyToMany, entre Perfil e Permissão.
O erro ocorre quando vou alterar um Perfil.
Tipo assim:
Na página tenho uma lista de Perfis, seleciono um para alterar, aparece a página de alteração, modifico algo, e quando clico em salvar acontece a exception.
Sem a annotation (@LazyCollection(LazyCollectionOption.FALSE)) fica pior, a exception acontece antes de exibir a página de alteração.
Com a annotation a exception é assim:
Sem a annotation a exception é assim:
Se precisar, minha classe de Persistência de Perfil está na primeiro post, o nome da classe é: PerfilHIB.
Então velho no seu relacionamento ManyToMany faça o seguinte @ManyToMany(fetch=FetchType.EAGER) isso deve mudar a forma com que ele pega os dados do banco.
Tive este mesmo problema.
no meu caso estava utilizando um <h:selectManyMenu com o value apontando para uma lista na qual eu queria inserir os itens selecionados
o que acontece e que na hora do jsf inserir os itens selecionados na lista ele não os converte como a lista é generia nada da errado ate o hibernate
tentar recuperala, neste momento em vez de recuperar uma List ele recupera uma List , sendo assim o objeto String não possui as
propriedades da suaclasse e a exception e lançada com a descrição dos atributos que não puderam ser encontrados em rumtime por reflexão ou metodos
getter e setter.
para resolver o problema vc deve recuperar os itens da List onde cada elemento corresponde ao valor retornado pelo metodo suaclasse.toString()
fazer uma parser para o tipo da sua ID e recuperar os dados no banco de dados.
qualquer duvida em relação a explicação poste junto a sua pergunta o codigo jsf responsavel por inserir os itens na List.