I'm trying to do a query by id in two ways, however, the resutlado is not returned. Is there anything wrong in my code? The I made in two ways:
public Laudo buscarLaudoPorCodigo(Long idLaudo) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
try {
System.out.println(idLaudo);
Criteria consulta = this.session.createCriteria(Laudo.class);
consulta.add(Restrictions.idEq(idLaudo));
Laudo resultado = (Laudo) consulta.uniqueResult();
System.out.println(resultado);
System.out.println(idLaudo);
return resultado;
} catch (RuntimeException erro) {
throw erro;
} finally {
sessao.close();
}
}
Second way:
public Laudo teste2(Long idLaudo) {
System.out.println("veio da visao "+idLaudo);
String hql = "select l from Laudo l where l.id_laudo = :idLaudo";
Query consulta = this.session.createQuery(hql);
consulta.setLong("id_laudo", idLaudo);
System.out.println("veio do bd "+consulta);
return (Laudo) consulta.uniqueResult();
}
And my Bean:
public void buscarLaudoPorCodigo() {
try {
LaudoDAOHibernate laudoDAOHibernate = new LaudoDAOHibernate();
Laudo resultado = laudoDAOHibernate.buscarLaudoPorCodigo(laudo.getIdLaudo());
if (resultado == null) {
System.out.println("laudo nao encontrado");
} else {
laudo = resultado;
}
} catch (RuntimeException erro) {
}
}
The two queries, both Hibernate, as in hql not return the id
I managed to solve using the same session of the search method, as before, was using the Session class. The correct code looked like this:
public Laudo buscarLaudoPorCodigo(Long idLaudo) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
try {
Criteria consulta = sessao.createCriteria(Laudo.class);
consulta.add(Restrictions.idEq(idLaudo));
Laudo resultado = (Laudo) consulta.uniqueResult();
return resultado;
} catch (RuntimeException erro) {
throw erro;
} finally {
sessao.close();
}
}