Ajuda com LazyInitializationException

Ola a todos

estava praticando hibernate , com uma aplicação, e me deparei com esse erro:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: camara.bean.Cliente.os, no session or session was closed

meu GenericDAO

[code]public abstract class GenericDAO {
private Session ses;
public GenericDAO() {
}
protected Session getSession() {
return HibernateUtil.getInstace().getSession();
//return HibernateUtil.getInstace().getSessionFactory().getCurrentSession();
}
protected void SaveOrUpdatePojo(Serializable pojo){
try{
ses = getSession();
ses.saveOrUpdate(pojo);
ses.getTransaction().commit();
} catch (Exception e){
e.printStackTrace();
} finally {
//ses.close();
}
}
protected T getPojo(Class classToSearch, Serializable key){
ses = getSession();
Serializable toReturn = (Serializable) ses.get(classToSearch, key);
ses.getTransaction().commit();
ses.close();
return (T) toReturn;
}
protected void removePojo(Serializable pojoToRemove){
ses = getSession();
ses.delete(pojoToRemove);
ses.getTransaction().commit();
ses.close();
}
protected Serializable getPurePOJO(String query, Object… params){
Object toreturn=null;
//Session ses=null;
try{
ses = getSession();
Query qr = ses.createQuery(query);
for (int i = 1; i <= params.length; i++) {
qr.setParameter(i-1, params[i-1]);
}
toreturn = qr.uniqueResult();
ses.getTransaction().commit();
} catch (HibernateException e){
e.printStackTrace();
} finally {
ses.close();
}
return (Serializable) toreturn;
}

protected <T extends Serializable> List<T> getPureList(Class<T> classToSearch,String query, Object... params){
    List<T> toreturn=null;
    try{
       ses = getSession();
        Query qr = ses.createQuery(query);
        for (int i = 1; i <= params.length; i++) {
            qr.setParameter(i-1, params[i-1]);
        }
        toreturn = qr.list();
        ses.getTransaction().commit();
    } catch (Exception e){
        e.printStackTrace();
        ses.getTransaction().rollback();
    } finally {
        ses.close();
    }        
    return toreturn;
}
public void Close(){
   getSession().close();
   ses = null;
}[/code]

Meu Hibernate Util:

public class HibernateUtil { private static HibernateUtil me; private SessionFactory sessionFactory; public HibernateUtil() { sessionFactory = new AnnotationConfiguration().configure("hibernate.cfg.xml").buildSessionFactory(); } public Session getSession(){ Session toReturn = sessionFactory.openSession(); toReturn.beginTransaction(); return toReturn; } public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public static HibernateUtil getInstace(){ if (me==null){ me = new HibernateUtil(); } return me; } }

o meu bean Clinte

[code]@Entity
@Table(name=“cliente”)
public class Cliente implements java.io.Serializable {

@OneToMany(mappedBy="cliente",fetch=FetchType.EAGER)
@Cascade(value={CascadeType.ALL,CascadeType.DELETE_ORPHAN})
private List<Contato> contato;

@Temporal(TemporalType.DATE)
@Column(name="cadastro")
private Date datacadastro;

@OneToMany(mappedBy="clientedebito",fetch=FetchType.LAZY)
private List<ContasReceber> contasreceber;


@OneToMany(mappedBy="cliente")
@Cascade(value=CascadeType.ALL)
private List<OrdemServico> os;

//gets e sets
[/code]

Classe OrdemServico

[code]@Entity
@Table(name=“ordemservico”)
public class OrdemServico implements java.io.Serializable {

@ManyToOne
@JoinColumn(name=“cliente”)
@Cascade(CascadeType.SAVE_UPDATE)
private Cliente cliente;

@OneToMany(mappedBy = "ordemservico",fetch=FetchType.LAZY)
@Cascade(value={CascadeType.ALL,CascadeType.DELETE_ORPHAN})

private List<DetalheOSProd> detalheosprod;

@OneToMany(mappedBy = "ordemservico",fetch=FetchType.LAZY)
@Cascade(value={CascadeType.ALL,CascadeType.DELETE_ORPHAN})
private List<DetalheOSServ> detalheosserv;

//gets e sets[/code]

Alguem saberia como posso resolver esse problema?

ps. Li sobre o Padrão Open Session in View https://www.hibernate.org/43.html ,mas não entendi de como aplicar ele ao meu codigo

o seu problema é o mesmo desse cara aqui

http://www.guj.com.br/posts/list/15/133184.java#719514

se precisar de mais ajuda, fala com o cara que abriu aquele post, pra ver se ele aprendeu mesmo a fazer open session in view

falow

[quote=vitenho]o seu problema é o mesmo desse cara aqui

http://www.guj.com.br/posts/list/15/133184.java#719514

se precisar de mais ajuda, fala com o cara que abriu aquele post, pra ver se ele aprendeu mesmo a fazer open session in view

falow[/quote]

Opa vitenho

vlw, irei dar uma estudada no codigo q vc passou. tem algumas coisas lá ,que eu vi, estava faltando no meu filter. Como deveria abrir a sessão e quando se fecha a sessão dentro do filtro.

Aqui você pode entender melhor o OpenSessionInView.