Hibernate currentSession.lock

Olá, estou com um probleminha em uma aplicação web.
Estou usando o padrão “Open Session in View” http://www.hibernate.org/43.html que usa um filter para
’sf.getCurrentSession().beginTransaction()’ e ‘sf.getCurrentSession().getTransaction().commit()’, que abre e fecha a sessão.

então sou obrigado a dar um lock nos objetos da httpSession para que eu possa acessar os atributos lazy/listas.

o que acontece, é que mesmo com o lock:

HibernateUtil.getSession().lock(usr, LockMode.NONE);
usr.getGrupo().getGrupoModuloAcao().size();

quando acesso uma lista em um atributo do usuário, recebo uma lazy exception:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.univali.g10.modulo.grupo.GrupoMd.grupoModuloAcao, no session or session was closed

testei esse padrão “open session in view” e sei que funciona, mas nessa aplicação eu não consigo encontrar a causa do problema, se algém tiver alguma idéia do que poderia estar acontecendo, por favor me dêem uma maozinha…

valeu!

olá pessoal, depois de quebrar a cabeça, descobri que o problema está nesse ManyToOne

na classe UsuarioMd:

@ManyToOne
@JoinColumn(name = "cod_grupo", nullable = false)
@org.hibernate.annotations.ForeignKey(name = "cod_grupo")    
private GrupoMd grupo = null;

da maneira como está, quando dou um lock no usuario(conforme o post anteriot), o grupo não é ‘travado’ na sessão novamente, então quando acesso um list do grupo, ocorre a lazyInitializationException.

alguém saberia me dizer qual o erro nas annotations, ou como poderia ser feito o manyToOne para que o lock funcione?

na classe GrupoMd:

@OneToMany(mappedBy="grupo", targetEntity=br.univali.g10.modulo.usuario.UsuarioMd.class)
private List<UsuarioMd> usuario = new ArrayList<UsuarioMd>();

valeu