Erro para trazer Registros

3 respostas
Chuvinha

Galera, não estou conseguindo trazer os registros de Categoria da minha aplicação.
Estou usando JPA.
Meu metodo está assim:

@SuppressWarnings("unchecked")
	public <T> List<T> getList(Class<T> castClasse, String jpql, Object... parametros) {
        List<T> toReturn = null;
        EntityManager em = getEntityManager();
        Query query = em.createQuery(jpql);
        for (int i = 0; i < parametros.length; i++) {
            query.setParameter(i + 1, parametros[i]);
        }
        toReturn = query.getResultList();
        em.getTransaction().commit();
        em.close();

        return toReturn;
    }

Minha entity está assim:

@Entity
@Table(name = "tbl_prd_categoria")
public class Categoria implements Serializable {
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue
	@Column(name = "id_categoria")
	private Integer idCategoria;

	@Column(name = "sigla", nullable = true)
	private String sigla;

	@Column(name = "categoria", nullable = true)
	private String categoria;

	@ManyToOne
	@JoinColumn(name = "id_grupo_categoria_fk", referencedColumnName = "id_grupo_categoria")
	private GrupoCategoria grupoCategoria;

	@OneToMany(mappedBy = "categoria", fetch = FetchType.LAZY)
	private List<RelacaoCategoria> relacaoCategoriaList;

E o erro é o seguinte:

24/01/2011 11:06:40 org.hibernate.LazyInitializationException <init>
SEVERE: failed to lazily initialize a collection of role: br.com.editorasaraiva.repositoriodigital.entity.GrupoCategoria.categoriaList, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.editorasaraiva.repositoriodigital.entity.GrupoCategoria.categoriaList, no session or session was closed
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343)
	at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)

Alguém poderia me ajudar?

3 Respostas

eduardoac

Chuvinha:

24/01/2011 11:06:40 org.hibernate.LazyInitializationException <init> SEVERE: failed to lazily initialize a collection of role: br.com.editorasaraiva.repositoriodigital.entity.GrupoCategoria.categoriaList, no session or session was closed org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.editorasaraiva.repositoriodigital.entity.GrupoCategoria.categoriaList, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350) at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343) at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)

Note que esta dando erro em br.com.editorasaraiva.repositoriodigital.entity.GrupoCategoria.categoriaList, o que é esse categoriaList que não achei no seu código? Poderia postar também a query que esta mandando?

Abraços!

Chuvinha

Então Eduardo, minha entidade GrupoCategoria é esta:

@Entity
@Table(name = "tbl_prd_grupo_categoria")
public class GrupoCategoria implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue
	@Column(name = "id_grupo_categoria")
	private Integer idGrupoCategoria;

	@Column(name = "grupo", nullable = true)
	private String grupo;

	@ManyToOne
	@JoinColumn(name = "id_categoria_livraria_fk", referencedColumnName = "id_categoria_livraria")
	private CategoriaLivraria idCategoriaLivraria;

	@OneToMany(mappedBy = "grupoCategoria")
	private List<Categoria> categoriaList;

E na minha classe CategoriaDAO faço a query pra buscar os registros.

public List<Categoria> getCategorias(){
        List<Categoria> categorias = JPAUtil.getInstance().getList(Categoria.class, "SELECT c FROM Categoria c ORDER BY idCategoria");
        return categorias;
    }

Não estou encontrando nada de errado.
Vc sabe o que pode ser?

eduardoac

Da uma olhada no atributo lazy nos relacionamentos, coloca como false, ou seja, irá carregar todos os objetos mapeados e relacionados.
Utilizei muito pouco JPQL, dai não sei como é o comportamento de lazy com ele.
[]´s

Criado 24 de janeiro de 2011
Ultima resposta 24 de jan. de 2011
Respostas 3
Participantes 2