Hibernate - Erro Sinistraço!

Olá Grupo!

Na minha aplicação, no momento em que vou fazer uma busca no banco de dados usando o Hibernate estou recebendo um erro. Que é o seguinte:

Caused by: gfi.dao.DAOException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of gfi.dominio.Despesa.setParcelas
        at gfi.dao.DespesaDAO.obterDespesasPagar(DespesaDAO.java:130)
        at gfi.modelo.DespesaModelo.obterDespesasPagar(DespesaModelo.java:103)
        ... 28 more
Caused by: org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of gfi.dominio.Despesa.setParcelas
        at org.hibernate.tuple.PojoEntityTuplizer.setPropertyValuesWithOptimizer(PojoEntityTuplizer.java:215)
        at org.hibernate.tuple.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:185)
        at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3232)
        at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:126)
        at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
        at org.hibernate.loader.Loader.doQuery(Loader.java:717)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
        at org.hibernate.loader.Loader.doList(Loader.java:2150)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
        at org.hibernate.loader.Loader.list(Loader.java:2024)
        at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:369)
        at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:300)
        at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1127)
        at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
        at gfi.dao.DespesaDAO.obterDespesasPagar(DespesaDAO.java:127)
        ... 29 more
Caused by: net.sf.cglib.beans.BulkBeanException: illegal access to loading collection
        at gfi.dominio.Despesa$$BulkBeanByCGLIB$$8a1697d4.setPropertyValues(<generated>)
        at org.hibernate.tuple.PojoEntityTuplizer.setPropertyValuesWithOptimizer(PojoEntityTuplizer.java:212)
        ... 44 more
Caused by: org.hibernate.LazyInitializationException: illegal access to loading collection
        at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:341)
        at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
        at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:138)
        at gfi.dominio.Despesa.setParcelas(Despesa.java:83)
        ... 46 more

A idéia é a seguinte:

Uma Despesa tem 0-N Parcelas…

Os mapeamentos são assim:

Despesa.hbm.xml

<hibernate-mapping>
    <class name="gfi.dominio.Despesa">
        <id name="idDespesa" column="idDespesa">
            <generator class="identity"></generator>
        </id>
        <property name="descricao"/>
        <property name="quantidade" />
        <property name="valor" />
        <property name="dataCadastro" />
        <property name="idStatus" />
        <property name="vitalicia" />

        <many-to-one name="tipoDespesa" class="gfi.dominio.TipoDespesa" column="idTipoDespesa" lazy="false"/>
        <many-to-one name="periodicidade" class="gfi.dominio.Periodicidade" column="idPeriodicidade" lazy="false" />
        
        <set name="parcelas" table="ParcelaDespesa" lazy="true" cascade="all-delete-orphan" order-by="idParcelaDespesa asc" inverse="true">
            <key column="idDespesa" update="false" />
            <one-to-many class="gfi.dominio.ParcelaDespesa" />
        </set>
    </class>
</hibernate-mapping>

ParcelaDespesa.hbm.xml

<hibernate-mapping>
    <class name="gfi.dominio.ParcelaDespesa">
        <composite-id name="parcelaDespesaPK" class="gfi.dominio.ParcelaDespesaPK">
            <key-property name="idParcelaDespesa" />
            <key-many-to-one name="despesa" class="gfi.dominio.Despesa" column="idDespesa" />
        </composite-id>
        <property name="dataVencimento" />
        <property name="valor" />
        <property name="idStatus" />
    </class>
</hibernate-mapping>

A busca no meu DespesaDAO é assim:

StringBuilder hql = new StringBuilder();
            hql.append("from Despesa d left join fetch d.parcelas p ");
            hql.append("where (d.idStatus IN ('NP','PP') or p.idStatus IN ('NP','PP')) ");
            hql.append("and ( (d.dataCadastro between :dataInicio and :dataFim) or (p.dataVencimento between :dataInicio and :dataFim) )");
            
            Query query = session.createQuery(hql.toString());
            
            query.setDate("dataInicio", dataInicio);
            query.setDate("dataFim", dataFim);

            return query.list();

Se alguém puder me dar uma ajuda, será bem vinda…

Abraços!

Ramon

Siga a sugestão na exceção e veja o stacktrace depois.

Olá, vc conseguiu resolver o problema da exceção “illegal access to loading collection” xxx

Caso tenha, por favor me passe a solução, to enrolado nisso também