Pesquisa no banco de dados com hibernate

7 respostas
D

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);

        <a href="//transaction.commit">//transaction.commit</a>();
}catch (HibernateException e) {

        e.printStackTrace();

    }finally {

        if(session!=null) {

            session.close();

        }

    }

    return users;

}

Obrigado.

7 Respostas

rcarvalhoalencar

Obrigatoriamente tem que ser baseado nesse código? Você pegou de algum site gringo?

D

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.

D
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;

}
rcarvalhoalencar

Que bom. Já estava entrado para responder.

D

Obrigado.

Você conhece outra forma melhor?

darlan_machado

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.

D

Obrigado pelo retorno.

Criado 29 de março de 2019
Ultima resposta 29 de mar. de 2019
Respostas 7
Participantes 3