SELECT NO HIBERNATE - alguem pode me ajudar?

16 respostas
F

tarde pessoal!!!

estou com um problema, eu tenho uma entidade usuario que possui uma lista de suas permissoes, o problema é q eu nao consigo fazer uma busca para me retornar os usuarios e suar permissoes na tabelinho

minha classe

private Long id;
	private String usuario;
	private String senha;
	@ManyToMany(fetch=FetchType.EAGER) 
	private List<Permissao> permissoes;
..............

já tentei de tudo, mas nao consigo… alguem pode me ajudar!!!

16 Respostas

thiagocg

como vc mapeou o outro lado?

F

do outro lado esta mapeado assim:

@ManyToMany(fetch=FetchType.LAZY, mappedBy="permissoes")
private List<Usuario> usuarios;
thiagocg

você precisa de um mapemento bidirecional?

Se não precisar tenta fazer desta forma

@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="categoria_cliente_juridico",
		   joinColumns={@JoinColumn(name="id_cliente_juridico")},
		   inverseJoinColumns={@JoinColumn(name="id_categoria")})
private Set<CategoriaCliente> categoriaClienteSet;

Aqui eu to indicando qual é a tabela q é o relacionamento many-to-many, e bt indico as chaves, local (id_cliente_juridico) e a da outra ponta do mapeamento (id_categoria)
Esta fucionando perfeitamente assim, tenta ai!

F

e como eu faço p/ listar tudo?? na tabela?? nao entendi como eu vou fazer um list

thiagocg

nesse caso como ta carregando td com eager vc pode dar um “get” direto na coleção

F

nao deu certo nao… ele nao dá um get na minha lista nao… :cry:

thiagocg

posta pra mim os seus dois lados do relacionamento

F

classe usuario

private Long id;  
private String usuario;  
private String senha;  
@ManyToMany(fetch=FetchType.EAGER)   
private List&lt;Permissao&gt; permissoes;

classe permissao

@ManyToMany(fetch=FetchType.LAZY, mappedBy="permissoes")  
private List&lt;Usuario&gt; usuarios;

ele cria uma terceira tabela, e é esta terceira tabela q eu preciso, mas nela so consta os id, e nao consigo pelo hibernate pegar essa tabela pq ela nao é uma classe… nao sei mais o q fazer :oops:

obrigada pela paciencia :slight_smile:

thiagocg

O que vc precisa fazer aí é definir o lado que irá persistir a relação entre os dois (a tabelinha com os id’s) e indicar da maneira q te passei no post anterior, que faço um relacionamento entre ClienteJuridico e CategoriaCliente, precisa definir os joinColums e joinTable(q é a tabelinha com os id’s), faz uns testes ai usando aquele codigo q te passei, tem q passar os parametros corretos tb senão ele não acha a tabela relacionamento!

http://www.hibernate.org/hib_docs/annotations/reference/en/html/entity.html#entity-mapping-association

F

bom dia!!!

eu tenho q mapear dos dois lados???

eu fiz assim, mas só do lado forte, no lado fraco continua igual:

@ManyToMany(fetch=FetchType.EAGER) 
@JoinTable(name="usuario_permissoes",  
		joinColumns={@JoinColumn(name="id_usuario")},  
		inverseJoinColumns={@JoinColumn(name="permissao_id")}) 
private List&lt;Permissao&gt; permissoes;

e mesmo assim nao consigo dar o get neles… :frowning: acho q vou desistir… :cry:

thiagocg

A persistencia é a chave para um bom desenvolvedor, nunca desista!

Aparentemente esta certo, se as chaves q vc indicou forem com estes nomes mesmo em sua tabela relacionamento!

se vc quiser pegar apenas as permissões do lado do usuário, nem precisa ter mapeado o outro lado com um list de usuarios!

vc tem certeza q tem registro no bd?

F

entao… tem registro sim no banco…

ah desisto!!! :cry: pior q nem com select normal eu estou conseguindo :shock: :shock:

F

o meu maior problema é, em uma tabela (do richfaces mesmo) como eu vou exibir uma lista de usuarios e suas permissoes???

é isso q eu preciso :frowning:

thiagocg

eu to usando a tree do tomahawk

thiagocg

eu uso a tree do tomahawk pra listar as permissoes de acesso agrupadas por menu, ñ me lembro se o richfaces não tem ou eu não consegui fazer funcionar nele

F

vixe, será q é por isso entao, o richfaces nao aceita?!

mas um select com hql ou criteria era p/ fazer, não era?!?! nem isso eu consigui :cry:

Criado 6 de outubro de 2008
Ultima resposta 8 de out. de 2008
Respostas 16
Participantes 2