Oi GUJ,
pessoal é uma dúvida que tenho, o seguinte código não funciona:
public static List<Lote> retornarMeusLotes(Usuario usuario) {
List<Lote> lotes = null;
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
try {
Query query = session.createQuery("select lote from Lote lote where lote.usuario.email= :email");
query.setParameter("email", usuario.getEmail());
if (query.list().size() > 0) {
lotes = (List<Lote>) query.list();
}
} catch (HibernateException he) {
session.getTransaction().rollback();
System.out.println("CONEXAO BD - RETORNAR MEUS LOTES" + he.getCause().getLocalizedMessage());
} finally {
session.clear();
session.close();
}
return lotes;
}
Este funciona:
public static List<Lote> retornarMeusLotes(Usuario usuario) {
List<Lote> lotes = null;
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
try {
Query query = session.createQuery("select lote from Lote lote where lote.usuario.email= :email");
query.setParameter("email", usuario.getEmail());
if (query.list().size() > 0) {
lotes = (List<Lote>) query.list();
}
} catch (HibernateException he) {
session.getTransaction().rollback();
System.out.println("CONEXAO BD - RETORNAR MEUS LOTES" + he.getCause().getLocalizedMessage());
}
return lotes;
}
Notem que a diferença é que no que não funciona eu abro uma sessão, e no outro eu pego a sessão atual.
E que no que não funciona eu limpo e fecho a sessão, e no outro eu não limpo e nem fecho.
Por que dá errado ?
Não temos que limpar e fechar a sessão toda vez ?