Olá utilizo EJB com CDI e JSF em uma aplicação.
Tenho tido alguns problemas com LazyInicializationException. O que acontece é que ao inicializar uma pagina JSF, é carregado o Managed Bean da mesma no entanto gerenciado pelo CDI com @Named.
Dentro dessa pagina eu tenho um campo que chama um dialogo com uma tabela com todos os registros cadastrados. Esse dialogo está em um outro managed bean, específico somente para o dialogo, onde o mesmo busca todos os registros. Ao selecionar um registro na tabela do dialogo, o registro é enviado através do evento ajax "dialogReturn" do JSF para o bean da pagina de cadastro.
Percebemos entao que a consulta foi realizada dentro de um Bean diferente do Bean de cadastro.
Ou seja, a transacao que o EJB abriu com o JPA foi no bean de selecao, e quando eu seleciono o registro o mesmo retorna ao bean de cadastro, e o EJB fecha a transacao automaticamente.
Nesse caso se eu precisar buscar algum relacionamento @OneToMany do registro dentro do bean de cadastro, ocorrerá um LazyInicializationException, pois a transacao de busca foi aberta no bean de selecao, e essa transacao jã nao existe mais no bean de cadastro.
Gostaria de saber se é possível a criação de um Filter de EntityManager para que a transação continue online entre os beans.
Ou se tem alguma outra forma de tratar isso.
Alguma ideia?