Recuperar objeto usando Hibernate

Fala pessoal!

Estou tentando fazer algo que parece ser muito simples, mas está meio complexo pra mim…vê se alguém consegue me ajudar…

A algum tempo estou tentando recuperar o objeto “usuario”, que já está gravado no Banco de Dados usando seu nick name…mas se alguém tiver algum modo melhor, que recupere o usuário sem necessitar do nick, estou aberto para conselhos rsrs…

Testei consultas de maneiras diferentes e fui inspecionando o resultado dos objetos através do debug sempre depois da operação…e nada!!! O usuário “u” sempre me retorna nulo!

Segue o código das consultas:


package persistence;  
  
import java.util.List;  
  
import manager.UsuarioController;  
  
import org.hibernate.Query;  
import org.hibernate.Session;  
import org.hibernate.Transaction;  
import org.hibernate.criterion.Restrictions;  
import org.springframework.security.core.context.SecurityContextHolder;  
import org.springframework.security.core.userdetails.User;  
  
import entity.Mensagem;  
import entity.Usuario;  
public class MensagemDao {  
  
    Session session;  
    Transaction transaction;  
    Query query;  
      
    String uc = (String) new UsuarioController().getUsuario().getUsername();  
      
      /**Método 1 - public Usuario buscaUsuario() throws Exception{ 
      session = HibernateUtil.getSessionFactory().openSession(); 
      Query query = session.createQuery("select u from Usuario as u where u.nick =:parametro"); 
      query.setParameter("parametro", uc); 
      Usuario usr = (Usuario) query.list(); 
      session.close(); 
      return usr; 
      } 
     
    Método 2 - public Usuario buscaUsuario(String uc){ 
        session = HibernateUtil.getSessionFactory().getCurrentSession(); 
        Query query = session.createQuery("From Usuario where nick= :uc"); 
        Usuario userx = (Usuario) query.setParameter("uc", uc).uniqueResult(); 
         
        return userx; 
    }**/  
        
      
     public void create(Mensagem m, Usuario u) throws Exception{  
       session = HibernateUtil.getSessionFactory().openSession();  
       transaction = session.beginTransaction();  
         
       //PRECISO PREENCHER O U COM O USUARIO QUE ESTÁ LOGADO E CADASTRADO NO BD  
         
           //Resultado Método 1 - u = this.buscaUsuario();  
       //Resultado Método 2 - u = this.buscaUsuario(uc);  
         
       //Método direto - u = (Usuario) session.createCriteria(Usuario.class).add(Restrictions.eqProperty("nick", uc)).uniqueResult();  
         
       m.setUsuario(u);  
         
       session.save(m);  
       transaction.commit();  
       session.close();    
      } 

NENHUM desses métodos deu certo…e conferi o objeto “uc”, e ele realmente está preenchido com o valor do username…
Alguém me helpa!

Abraços!

seu método 1 parece o mais claro… na linha

não da erro de compilação? o método retorna uma lista…
se não… essa lista vem vazia? é lançada alguma exceção?

Tópico movido para o fórum de persistência. Por favor, leia com atenção a lista de fóruns antes de postar, nem tudo é Java Básico.

Vlw dnovo, Vini!

[quote=digaoneves]seu método 1 parece o mais claro… na linha

não da erro de compilação? o método retorna uma lista…
se não… essa lista vem vazia? é lançada alguma exceção?[/quote]

Fala digaoneves!

Não não…não dá nenhum erro…ele simplesmente nem grava no banco o novo objeto mensagem…
:?

Fala pessoal!!!

Consegui resgatar o objeto aqui, graças a um amigo que me abriu os olhos!!!

Além de usar o nome de uma propriedade de outra tabela (me confundi, para variar), também precisava entender que, por padrão, a query retorna uma lista de registros…então tive que usar algo além do simples uniqueResult…ai usei o .list().get(index)!!!