I'm using JBoss 4.0.3SP1 whit EJB3 and MyFaces.
In a JSF managed bean, my application begin a JTA transaction and invoke a stateless session façade that return a entity bean. The entity bean has a lazy collection that throws org.hibernate.LazyInitializationException when I try to get it at managed bean method.
Follow the managed bean method:
public String consultar() throws Exception {
ServiceLocator locator = ServiceLocator.getInstance();
UserTransaction tx = (UserTransaction) locator.lookup( "java:comp/UserTransaction" );
tx.begin();
try {
AplicacaoFacade facade = locator.lookupEJB( AplicacaoFacade.class );
// Get informations for page
vo = (UsuarioVO) paginaRegistros.getRowData();
Usuario usuario = facade.getUsuarioPorId( vo.getId() );
// Build organizations collection
List<Long> organizacoesId = new ArrayList<Long>();
// THROWS LAZY EXCEPTION !!!!!!
for ( Organizacao organizacao : usuario.getOrganizacoes() ) {
organizacoesId.add( organizacao.getId() );
}
tx.commit();
}
catch ( Exception e ) {
tx.rollback();
}
return Constantes.OUTCOME_SUCESSO;
}@Stateless
public class AplicacaoFacadeBean implements AplicacaoFacade {
@PersistenceContext EntityManager entityManager;
public Usuario getUsuarioPorId( Long usuarioId ) {
return entityManager.find( Usuario.class, usuarioId );
}