Tarde x]
Galera, vamos aos códigos ?
public class AccountDAO {
private GenericDAO<Account> dao;
private Session session;
public AccountDAO(Session session) {
this.session = session;
dao = new GenericDAO<Account>(session, Account.class);
}
public List<Account> doSomething(){
return (List<Account>) dao.something();
}
Então beleza… Esse é o DAO que eu tenho x]
E eu fiz outro DAO que encapsula este Account aí…
tipo assim:
@Component
public class RootDAO {
private AccountDAO accountDAO;
public RootDAO(AccountDAO accountDAO) {
this.accountDAO = accountDAO;
}
public List<Account> list(){
return accountDAO.doSomething();
}
Aí recebo a bela Exception dizendo que org.hibernate.SessionException: Session is closed!
no meu método something() láááá do DAO generico…
Eu mudei um pouco o nome pra simplificar… mas o método something na verdade executa um HQL…
session.beginTransaction();
Query q = session.createQuery(hql);
if (notEmpty(params))
for (HqlParameter parameter : params)
parameter.set(q);
if (maxResults > 0) {
q.setFirstResult(firstResult);
q.setMaxResults(maxResults);
}
q.setResultTransformer(DISTINCT_ROOT_ENTITY);
List<?> list = q.list();
session.getTransaction().commit();
session.close();
return list;
obrigado