@Entity / @NamedQueries / @Table

9 respostas
R

Olá pessoal,

Tenho o seguinte código já pronto:

@Entity
@NamedQueries(value={
		@NamedQuery(name="usuarioGrupo", query="select g from user u, grupo g where g.usuario = u and u.usuario= :usuario")
})
@Table(schema="gruposAcesso", name="grupo")

Este código está colocado antes da implementação da classe.
Eu preciso criar um método que pegue exatamente isto, o grupo ao qual o usuário foi inserido.
Como interajo com este código acima? Como ficaria meu método para pegar o grupo pelo id do usuario?

Desculpe se a pergunta for básica para muitos.
Um abraço!

9 Respostas

R

Ok, vc está certo.
Encontrei a classe e percebi que ela usava este código, então criei o seguinte código, mas ele me retorna um nullPointerException, mesmo tendo um grupo associado.

int i=0;
		GrupoPersist g = new GrupoPersist();
		for(Usuario usuario : usrg){
			String s = g.getGrupoPorUsuario(u.get(i).getIdUsuario()).get(0).getNomeGrupo();
			u.get(i).setNomeGrupo(s);
			i++;
		}

u é um List já preenchido com os usuários cadastrados.
GrupoPersist é a classe que pega os grupos de usuário.

R

pq como esqueci de dizer, o retorno de getGrupoPorUsuario() é um List. Pois anteriormente um usuário podia estar em mais de um grupo (sinceramente, não me pergunte porque, também não entendi), agora, como um usuário só pode estar em um único grupo eu pego apenas o da primeira posição, 0.

R
GrupoPersist g = new GrupoPersist();
		for(Usuario usuario : u){
			usuario.setNomeGrupo(g.getGrupoPorUsuario(usuario.getIdUsuario()).get(0).getNomeGrupo());
		}
R
javax.servlet.ServletException: #{ManagerBean.verUsuariosPorNome}: Exception [TOPLINK-7242] (Oracle TopLink Essentials - 2.0.1 (Build b04-fcs (04/11/2008))): oracle.toplink.essentials.exceptions.ValidationException
Exception Description: An attempt was made to traverse a relationship using indirection that had a null Session.  This often occurs when an entity with an uninstantiated LAZY relationship is serialized and that lazy relationship is traversed after serialization.  To avoid this issue, instantiate the LAZY relationship prior to serialization.
R

desculpe, este erro não está acontecendo mais, agora apenas:

javax.servlet.ServletException: #{ManagerBean.verUsuariosPorNome}: java.lang.NullPointerException

R

Se o projeto já estiver criado, vc deve ter um método em alguma classe que acessa o banco que usa essa namedQuery.

Se for um projeto seu, novo, e vc escreveu isso, vc deve estar vendo algo sobre JPA, certo? Então agora vc precisa criar uma classe que conecta no banco usando e executa sua namedQuery; esta classe vai ter um EntityManager que vai controlar sua transação e executar a query no banco.

É esse seu problema?

R

Coloca o stackTrace aqui no fórum pra gente ver…

Mas, por enquanto, pq vc não faz seu código assim:

// u - List<Usuario> GrupoPersist g = new GrupoPersist(); for(Usuario usuario : u){ String s = g.getGrupoPorUsuario(usuario.getIdUsuario()).get(0).getNomeGrupo(); usuario.setNomeGrupo(s); }

R

Em relação a sua lista, blz, o que eu alterei no código foi a utilização do usuario no for.

pelo debug vc não consegue ver se todos os objetos estão carregados?

e a exception? coloca aqui no forum…

R

rcost4:
desculpe, este erro não está acontecendo mais, agora apenas:

javax.servlet.ServletException: #{ManagerBean.verUsuariosPorNome}: java.lang.NullPointerException

Quando o console te mostra essa exception, ele gera várias linhas com a descrição… manda todas essas linhas.

Vc tentou o debug?

Criado 13 de fevereiro de 2009
Ultima resposta 13 de fev. de 2009
Respostas 9
Participantes 2