Olá Pessoal,
Migrei recentimente para o hibernate 4.2.3, ao realizar o consulta a baixo, o hibernate me retorna uma coleção de objetos do tipo Usuario que tem os atributos (id, nome, colaborador). Porém não consigo ter acesso ao ID de cada objeto. Ou seja
ID: 1
Nome: maria
Colaborador: maria fernanda da silva
Tentei obter o ID “1” do objeto mas não estou conseguindo. Os demais dados consigo acessar normal.
Testei o mesmo método na versão 3.6 do hibernate e funcionou normal. Lí que CRITERIA ignora os IDs mas não encontrei nada para “CreateQuery”. Como posso resolver essa situação
/* Realiza consultas em uma entidade*/
public List getConsulta(){
//utilizado com a classe Manager
Session session = sessionManager.getSessionCurrent();
//Mapeia a tabela do banco recional para objeto
Query select = session.createQuery("From Usuario" );
//Transforma todos os dados encontrados em um lista de objetos
List list = select.list();
return list;
}
Não existe nenhuma razão para que você esteja tendo tal problema.
Eu nunca tive nenhuma dificuldade como acesso à atributos de objetos obtidos a partir de hql ou Criteria.
Pode postar o método em que você tenta extrair estes atributos?
Foi que pensei mas realmente está acorrendo! fiz um teste utilizando o hibernate 3.6 e funcionou normal. Então resolvi postar para saber se isso foi alguma modificação do Framework, considerando que estou utilizando a ultima versão 4.2.3. Você também está utilizando a ultima versão?
A classe está mapeada corretamente, observei pelo log do console (eclipse) a consulta gerada pelo hibernate, na consulta ele lista todos os campos (select id, usuNome, colaborador From Usuario) da tabela incluindo o ID, porém ao tentar acessar a informação dentro do atribuição é retornado nul.
Lí na documentação do hibernate o tipo de Consulta CRITERIA ignora os ID, mas lá não fala nada sobre HQL.
Olá Pessoal,
Encontrei a falha, tenho que agradecer ao “drsmachado” que poderia pedir qualquer outra classe mas pediu logo a classe de acesso (V.O, Persistência, Modelo, JavaBens) como queiram chamar.
O ID não era mostrado pois esqueci de por a cláusula this
Jeito ERRADO
public void setIdUsu(Integer idUsu) {
idUsu = idUsu;
}
OBS: isso corre porque a JVM entende a variável do método recebe ele mesmo, ou seja o ATRIBUTO da classe idUsu não recebe nenhuma informação
Jeito CERTO
public void setIdUsu(Integer idUsu) {
this.idUsu = idUsu;
}
OBS: Neste caso a JVM consegue diferenciar entre o ATRIBUTO da classe idUsu e a variável passada pelo parâmetro do método
Bem, deixo a dica para o pessoal que até então não sabe a importância do .this rsrsrs