1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Como resolver o erro: LazyInitializationException: illegal access to loading collection

Olá! Estou usando o selectOneListBox do Primefaces, porém não estou conseguindo resolver um problema. Já testei o Converter e ele está funcionando (Convertendo objeto para String e String para Objeto). Por favor, me ajude! :(

Minha página JSF:

```

```

Meu Managed Bean:


```public class GrupoMB implements IMB, Serializable {

/* */ private static final long serialVersionUID = 1L;

private Grupo grupo = new Grupo(); private GrupoDAO grupoDAO = new GrupoDAO(); private List listaGruposAdm = new ArrayList();

@ManagedProperty(value = "#{usuarioMB}") private UsuarioMB usuarioMB;

public Grupo getGrupo() { return this.grupo; }

public void setGrupo(Grupo grupo) { this.grupo = grupo; }

public UsuarioMB getUsuarioMB() { return usuarioMB; }

public void setUsuarioMB(UsuarioMB usuarioMB) { this.usuarioMB = usuarioMB; }

public List getListaGruposAdm() { try { List lista = grupoDAO.lerTodos(); for (Grupo grupo : lista) { if (grupo .getAdministrador() .getEmail() .equalsIgnoreCase( getUsuarioMB().getUsuario().getEmail())) { if (!listaGruposAdm.contains(grupo)) { listaGruposAdm.add(grupo); } } } } catch (Exception e) { e.getStackTrace(); } return listaGruposAdm; }

public void setListaGruposAdm(List listaGrupos) { this.listaGruposAdm = listaGrupos; }

public String abrirGrupo(Grupo grupo) { return "grupo.jsf?faces-rediret=true"; }

}```

Meu Converter:

``` @FacesConverter(value = "grupo-converter", forClass = Grupo.class)
public class GrupoConverter implements Converter {

@Override public Object getAsObject(FacesContext arg0, UIComponent arg1, String valor) { if (valor == null || valor.length() == 0){ return null; } Grupo grupo = null; try{ GrupoDAO dao = new GrupoDAO();

grupo = dao.lerPorId(Long.parseLong(valor)); return grupo; }catch(Exception e){ System.out.println("Não funcionou"); return null; }

}

@Override public String getAsString(FacesContext arg0, UIComponent arg1, Object objeto) { if (objeto instanceof Grupo) { return ((Grupo) objeto).getId().toString(); } return null; }

}```

Erro:

org.hibernate.LazyInitializationException: illegal access to loading collection org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:366) org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:111) org.hibernate.collection.PersistentSet.hashCode(PersistentSet.java:434) modelo.Usuario.hashCode(Usuario.java:357) modelo.ExperienciaProfissional.hashCode(ExperienciaProfissional.java:139) java.util.HashMap.hash(Unknown Source) java.util.HashMap.put(Unknown Source) java.util.HashSet.add(Unknown Source) java.util.AbstractCollection.addAll(Unknown Source) org.hibernate.collection.PersistentSet.endRead(PersistentSet.java:352) org.hibernate.engine.loading.CollectionLoadContext.endLoadingCollection(CollectionLoadContext.java:261) org.hibernate.engine.loading.CollectionLoadContext.endLoadingCollections(CollectionLoadContext.java:246) org.hibernate.engine.loading.CollectionLoadContext.endLoadingCollections(CollectionLoadContext.java:219) org.hibernate.loader.Loader.endCollectionLoad(Loader.java:1005) org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:993) org.hibernate.loader.Loader.doQuery(Loader.java:857) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274) org.hibernate.loader.Loader.loadCollection(Loader.java:2166) org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:62) org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:627) org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:83) org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1863) org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:369) org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:111) org.hibernate.collection.PersistentSet.equals(PersistentSet.java:429) modelo.Usuario.equals(Usuario.java:441) modelo.Grupo.equals(Grupo.java:178) javax.faces.component.SelectUtils.matchValue(SelectUtils.java:109) javax.faces.component.UISelectOne.validateValue(UISelectOne.java:153) javax.faces.component.UIInput.validate(UIInput.java:982) javax.faces.component.UIInput.executeValidate(UIInput.java:1248) javax.faces.component.UIInput.processValidators(UIInput.java:712) javax.faces.component.UIForm.processValidators(UIForm.java:253) javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261) javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261) javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1195) com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) javax.faces.webapp.FacesServlet.service(FacesServlet.java:658) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags hibernate java jsf java-ee primefaces ou faça a sua própria pergunta.