我正在尝试以两种方式通过id进行查询,但是,不会返回resutlado。我的代码有什么问题吗?我用两种方式制作:
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();
}
}
第二种方式:
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();
}
我的豆子:
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) {
}
}
这两个查询,都是Hibernate,因为在hql中没有返回id
答案 0 :(得分:0)
我设法使用与以前一样的搜索方法的同一会话来解决使用Session类的问题。正确的代码如下所示:
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();
}
}