Boa noite.
Gostaria de pesquisar um login no banco de dados, mas não estou conseguindo, gostaria de alguma coisa de acordo com esse código:
public Users findUsersDAO(String login) {
Users users = null;
Session session = null;
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
try{
session = sessionFactory.openSession();
//Transaction transaction = session.beginTransaction();
users = session.find(Users.class, login);
//transaction.commit();
}catch (HibernateException e) {
e.printStackTrace();
}finally {
if(session!=null) {
session.close();
}
}
return users;
}
Obrigado.
Obrigatoriamente tem que ser baseado nesse código? Você pegou de algum site gringo?
Não. Só postei um código que eu imaginei que poderia funcionar, mas pode ser de outra forma. Gostaria que fosse com hibernate e de preferência que não seja com nada que esteja depreciado. Você conhece alguma forma?
Obrigado.
Consegui assim:
public Users findUsersDAO(String login) {
Users user = null;
Session session = null;
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
try{
session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
String hql = " FROM Users tbl_users WHERE tbl_users.login = :login";
Query query = session.createQuery(hql);
query.setParameter(“login”, login);
List results = query.getResultList();
if (results != null && !results.isEmpty()) {
user = (Users) results.get(0);
}
transaction.commit();
}catch (HibernateException e) {
e.printStackTrace();
}finally {
if(session!=null) {
session.close();
}
}
return user;
}
Que bom. Já estava entrado para responder.
Obrigado.
Você conhece outra forma melhor?
De acordo com o javadoc do hibernate, o método find
espera dois argumentos: classe e primary key.
Se a coluna login
não é a PK, o método find é inútil e o meio de fazer isso, dependendo da versão do hibernate, é via hql mesmo. Se a versão tiver suporte a criteria, pode fazer deste modo.