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!