Hibernate - findByCriteria - Pesquisando duas vezes

Ola pessoal.
Gostaria que vocês ajudassem a exclarecer o porque de um metodo meu que executa getHibernateTemplate().findByCriteria estar pesquisando duas vezes sendo que da primeira, fica claro pelo script gerado pelo hibernate, que ja possui todo o conteudo a ser retornado.

O metodo foi implementado desta maneira:

	public Collection listarAtivosByTecnologia(
			PlanoFaturamento planoFaturamento, TipoPedido tipoPedido, CSA csa,
			Collection tecnologias) {
		
		final String METHOD_NAME = "listarAtivosByTecnologia";

		logger.logInfo(METHOD_NAME, ILogger.METHOD_START);
		
		DetachedCriteria c = DetachedCriteria.forClass(PacoteMinutos.class);
		c.setResultTransformer(DetachedCriteria.DISTINCT_ROOT_ENTITY);
		c.add(Restrictions.gt("id", new Long(0)));
		c.add(Restrictions.eq("ativo", Boolean.FALSE));
		c.createAlias("pacotesPlano", "pacotePlano");
		c.add(Restrictions.eq("pacotePlano.flagLinha", Boolean.TRUE));
		c.add(Restrictions.eq("pacotePlano.pk.planoFaturamento",
				planoFaturamento));
		c.add(Restrictions.eq("pacotePlano.pk.tipoPedido", tipoPedido));
		c.createAlias("csas", "csa");
		c.add(Restrictions.eq("csa.id", csa.getId()));

		c.createAlias("servico", "servico");
		c.createAlias("servico.tipoCanal", "tipoCanal");
		c.createAlias("tipoCanal.tecnologias", "tecnologias");
		Long tecnologiasId[] = new Long[tecnologias.size()];
		Iterator it = tecnologias.iterator();
		int i = 0;
		while (it.hasNext()) {
			Tecnologia tec = (Tecnologia) it.next();
			tecnologiasId[i] = tec.getId();
			i++;
		}
		c.add(Restrictions.in("tecnologias.id", tecnologiasId));
		c.addOrder(Order.asc("descricao"));
		
		Collection listaAtivos = getHibernateTemplate().findByCriteria(c);
		
		logger.logInfo(METHOD_NAME, ILogger.METHOD_END);
		
		return listaAtivos;
	}

No momento que ele executa o codigo Collection listaAtivos = getHibernateTemplate().findByCriteria(c); é executado o seguinte script:

12:06:50,468 DEBUG SQL:346 - /* criteria query */
select 
	this_.PACM_PACOTE_CD as PACM1_64_5_, 
	this_.PACM_PACOTE_NO as PACM2_64_5_, 
	this_.PACM_ENCARGO_CD as PACM3_64_5_, 
	this_.PACM_SUBORDINADAS_QT as PACM4_64_5_, 
	this_.PACM_EXCLUIDO_FL as PACM5_64_5_, 
	this_.PACM_DIAS_VIGENCIA as PACM6_64_5_, 
	this_.ROCS_ID as ROCS7_64_5_, 
	pacoteplan1_.PACM_PACOTE_CD as PACM1_66_0_, 
	pacoteplan1_.BIPL_ID as BIPL2_66_0_, 
	pacoteplan1_.TIPP_TIPO_PEDIDO_CD as TIPP3_66_0_, 
	pacoteplan1_.PACP_MESTRE_FL as PACP4_66_0_, 
	pacoteplan1_.PACP_LINHA_FL as PACP5_66_0_, 
	csas8_.PACM_PACOTE_CD as PACM1_, 
	csa2_.COAR_ID as COAR2_, 
	csa2_.COAR_ID as COAR1_26_1_, 
	csa2_.COAR_CSA as COAR2_26_1_, 
	csa2_.COAR_AREA_CD as COAR3_26_1_, 
	csa2_.COAR_ATIVO_FL as COAR4_26_1_, 
	csa2_.ROCS_ID as ROCS5_26_1_, 
	csa2_.COAR_CSA||' / '||csa2_.COAR_AREA_CD as formula1_1_, 
	servico3_.SECS_NAME as SECS1_89_2_, 
	servico3_.SECS_TYPE as SECS2_89_2_, 
	servico3_.SECS_DESC as SECS3_89_2_, 
	servico3_.CHTY_ID as CHTY4_89_2_, 
	tipocanal4_.CHTY_ID as CHTY1_134_3_, 
	tipocanal4_.CHTY_TYPE as CHTY2_134_3_, 
	tipocanal4_.CHTY_DESC as CHTY3_134_3_, 
	tecnologia12_.CHTY_ID as CHTY1_, 
	tecnologia5_.TITC_TECNOLOGIA_CD as TITC2_, 
	tecnologia5_.TITC_TECNOLOGIA_CD as TITC1_107_4_, 
	tecnologia5_.TITC_TECNOLOGIA_DS as TITC2_107_4_, 
	tecnologia5_.TITC_EXCLUIDO_FL as TITC3_107_4_ 
from 
	PACM_PACOTE_MINUTOS this_ 
	inner join PACP_PACOTE_PLANO pacoteplan1_ on 
		this_.PACM_PACOTE_CD=pacoteplan1_.PACM_PACOTE_CD 
	inner join ( 
				select distinct 
					coar.COAR_ID, 
					pacm.PACM_PACOTE_CD
				from 
					PACM_PACOTE_MINUTOS pacm
						inner join SECS_SERVICOS_CSA secs on 
							secs.SECS_NAME = pacm.PACM_ENCARGO_CD
						inner join coar_controle_area coar on 
							coar.COAR_ID = secs.COAR_ID and coar.ROCS_ID = pacm.ROCS_ID
				where 
					secs.SECS_ATIVO_FL = 'S'
		 ) csas8_ on 
		 this_.PACM_PACOTE_CD=csas8_.PACM_PACOTE_CD 
	inner join COAR_CONTROLE_AREA csa2_ on 
		csas8_.COAR_ID=csa2_.COAR_ID 
	inner join VW_SECS_SERVICOS_CSA servico3_ 
		on this_.PACM_ENCARGO_CD=servico3_.SECS_NAME 
	inner join CHTY_CHANNEL_TYPE tipocanal4_ 
		on servico3_.CHTY_ID=tipocanal4_.CHTY_ID 
	inner join TCCH_TITC_CHTY tecnologia12_ on 
		tipocanal4_.CHTY_ID=tecnologia12_.CHTY_ID 
	inner join TITC_TIPO_TECNOLOGIA tecnologia5_ 
		on tecnologia12_.TITC_TECNOLOGIA_CD=tecnologia5_.TITC_TECNOLOGIA_CD 
where 
	this_.PACM_PACOTE_CD > 0 
	and this_.PACM_EXCLUIDO_FL=? 
	and pacoteplan1_.PACP_LINHA_FL=? 
	and pacoteplan1_.BIPL_ID=? 
	and pacoteplan1_.TIPP_TIPO_PEDIDO_CD=? 
	and csa2_.COAR_ID=? 
	and tecnologia5_.TITC_TECNOLOGIA_CD in (?) 
order by 
	this_.PACM_PACOTE_NO asc

Na sequencia ele busca novamente as informações para cada item retornado no script acima, observe que estas informações ja teria sido retornada com o script anterior.

Segunda pesquisa:

11:31:56,437 DEBUG SQL:346 - 
/* load br.com.vivo.scc.model.entity.hibernate.PacoteMinutos */ 
select 
	pacoteminu0_.PACM_PACOTE_CD as PACM1_64_0_, 
	pacoteminu0_.PACM_PACOTE_NO as PACM2_64_0_, 
	pacoteminu0_.PACM_ENCARGO_CD as PACM3_64_0_, 
	pacoteminu0_.PACM_SUBORDINADAS_QT as PACM4_64_0_, 
	pacoteminu0_.PACM_EXCLUIDO_FL as PACM5_64_0_, 
	pacoteminu0_.PACM_DIAS_VIGENCIA as PACM6_64_0_, 
	pacoteminu0_.ROCS_ID as ROCS7_64_0_ 
from 
	PACM_PACOTE_MINUTOS pacoteminu0_ 
where 
	pacoteminu0_.PACM_PACOTE_CD=? 

É executado o script acima para cada linha do retorno do primeiro script.

O Mapeamento HBM principal desta criteria esta assim:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="br.com.vivo.scc.model.entity.hibernate">

<class 
    name="PacoteMinutos"
    batch-size="40" 
    table="PACM_PACOTE_MINUTOS">
	<cache usage="read-write"/>

    <id
        name="id"
        type="java.lang.Long"
        column="PACM_PACOTE_CD"
    >
        <generator class="sequence">
        	<param name="sequence">PACM_PACOTE_MINUTOS_SEQ</param>
        </generator>
    </id>

    <property
        name="descricao"
        type="java.lang.String"
        column="PACM_PACOTE_NO"
        length="255"
    />
    <property
        name="codigo"
        type="java.lang.String"
        column="PACM_ENCARGO_CD"
        length="50"
    />
    <property
        name="quantidade"
        type="java.lang.Long"
        column="PACM_SUBORDINADAS_QT"
        length="10"
    />
    <property
        name="ativo"
        type="br.com.vivo.framework.utility.HibernateSNBoolean"
        column="PACM_EXCLUIDO_FL"
        length="2"
    />
	<property
		name="diasVigencia"
		type="java.lang.Integer"
		column="PACM_DIAS_VIGENCIA"
		length="3"
	/>

    <!-- Associations -->
    
    <many-to-one
        name="rootCSA"
        class="RootCSA">
        <column name="ROCS_ID"/>
    </many-to-one>
    
	<bag name="pacotesPlano" cascade="all-delete-orphan">
		<key update="false">
			<column name="PACM_PACOTE_CD" not-null="true"/>
		</key>
		<one-to-many class="PacotePlano"/>
	</bag>

	<bag name="csas" cascade="lock,evict" inverse="false">
		<subselect>
			select distinct coar.COAR_ID, pacm.PACM_PACOTE_CD
			from PACM_PACOTE_MINUTOS pacm
			inner join SECS_SERVICOS_CSA secs on secs.SECS_NAME = pacm.PACM_ENCARGO_CD
			inner join coar_controle_area coar on coar.COAR_ID = secs.COAR_ID and coar.ROCS_ID = pacm.ROCS_ID
			where secs.SECS_ATIVO_FL = 'S'
		</subselect>
		<key column="PACM_PACOTE_CD"/>
		<many-to-many class="CSA" column="COAR_ID"/>
	</bag>

    <many-to-one
		name="servico"
		class="Servico"
		cascade="lock,evict"
		insert="false"
		update="false"
	>
        <column name="PACM_ENCARGO_CD"/>
    </many-to-one>
  
</class>
</hibernate-mapping>

Por favor me ajudam a exclarecer o motivo desta segunda pesquisa desnecessaria.

Abraços.