Gostaria de saber como utilizar o OpenSessionInView do spring.
Ele ja esta mapeado no web.xml, para acessar a session do DAO eu injeto nele a sessionFactory e sempre dou getCurrentSession(). Funciona direitinho, porem quando ele volta para o controller e depois para action, e tento iterar uma lista lazy na propria action ele esta dando LazyException. Ja tentei usar o o DAOSupport do spring e o hibernate template, o erro acontece do mesmo jeito.
São sei se muda alguma coisa mais de qualquer forma é uma informação a mais, meu DAO só tem uma anotação que é @Transactional em cima da declaração da classe do DAO generico (BaseDAO na minha aplicação).
OpenSessionInView nada mais é que um filtro (de requisições). Verifique se sua requisição está contida dentro do filtro. Não me parece problema no filtro mas algum erro na configuração do Hibernate (talvez a falta de alguma Annotation) ou a lista que vc está pedindo ainda não está contida na sessão do Hibernate, lembre-se que o hibernate é muito baseado em proxy e ao requisitar objetos estes já devem participar de sua sessão.
vinicius_roc
No meu web.xml ele ta mapeado como /* e a lista quando não esta na sessão ele tem q fazer um select p me trazer ela certo? E que anotação poderia ser? As classes estão mapeadas direitinho.
kzar.razk
A lista deve estar na sessão do Hibernate, ao chamar a lista (como é lazy provavelmente essa chamada está no view (JSP)) o Hibernate executa um SQL e popula a lista.
vinicius_roc
Tem algum arquivo (hibernate.cfg.xmg, applicationContext.xml, …) ou informação que poderia passar aqui, para você me ajudar melhor?
Vlw!!
kzar.razk
Só tenho experiencia com Annotations…
vinicius_roc
Acabei de notar um comportamento estranho…
Assim que eu entro na minha aplicação localhost:8080/minhaapp
ele abre o index.jsp que faz um redirect para uma action minha que não faz nada. Então sobreescrevendo os metodos getSession e closeSession do filtro para porder adicionar breackPoints vi que esta abrindo e fechando a sessão. Porem quando eu vou logar e pegar o objeto que tem essa lista e eu submeto esse formulario, ele não abre e tb não fecha a sessão, ele simplesmente não entra.
vinicius_roc
Descobri o problema, era algo muito de iniciante mas como nunca passei por isso não sabia.
Era a ordem em que estavam declarado os filter-mapping o do openSessionInView deveria vir antes do struts.