Lazy Exception Spring+Hibernate+Flex

6 respostas
furacao123

Aew galera estou tendo problemas para rodar aplicações com Spring+hibernate+Flex qunado tenho uma classe com relacionamento ManyToOne mesmo colocando como lazy ao chamar o objeto no flex ele me da o erro de LazyException, mas eu nem chamei o getLista do relacionamento, como eu concerto isso é a configuração do meu Spring que esta incorreta ou é algum macete no flex?

Segue o arquivo applicationContext.xml

<bean id="sessionFactory"
    class="br.com.transporteescolar.infrastructure.AnnotationOptimizedSessionFactoryBean"
    dependency-check="none">

        <property name="dataSource">
            <ref local="dataSource"/>
        </property>
        <property name="namingStrategy">
            <bean class="org.hibernate.cfg.DefaultComponentSafeNamingStrategy" />
        </property>
   

        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
		org.hibernate.dialect.MySQLDialect
                </prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.query.substitutions">true '1', false '0'"</prop>
            </props>
        </property>

        <property name="basePackage">
            <value>br.com.transporteescolar.business.entity</value>
        </property>
    </bean>

    <bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref local="sessionFactory" />
        </property>
    </bean>

    <context:annotation-config/>
    <context:component-scan base-package="br.com.transporteescolar.business.service" />
    <context:component-scan base-package="br.com.transporteescolar.data.dao" />
    <context:component-scan base-package="br.com.transporteescolar.business.factory" />

6 Respostas

jpjcjbr

Bom dia,

Tente habilitar o OpenSessionInView do Spring… é o filtro org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

na net vc acha documentação pra botar pra funcionar…

vlws

kzar.razk

O flex faz mais de uma chamada (requisição) na mesma tela? Se sim, é provável que o objeto pai esteja no escopo de requisição diferente do escopo de requisição do objeto filho. Avalie também se a sessão já não foi fechada quando é feita a chamada dos objetos filhos.

furacao123

Entao mas o estranho é que nao faço requisição nos filhos, na verdade eu nem mapiei na classe entity do flex as listas

furacao123

Implementei o OpenSessionInViewFilter na minha aplicação Spring + Hibernate +
Flex + Swiz pois estava tendo LazyInitializingException, o problema foi
corrigido mas ficou muito lento a aplicação pois pra cada registro é feito um
select o que eu posso melhorar na configuracao no web.xml

<!–Hibernate OpenSession Filter–>
<filter>
<filter-name>openSessionInViewFilter</filter-name>

<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>

</filter>

<filter-mapping>
<filter-name>openSessionInViewFilter</filter-name>
<url-pattern>/messagebroker/*</url-pattern>
</filter-mapping>
<!–Hibernate OpenSession Filter–>

kzar.razk

se está falando de granularidade do serviço…
faça da maneira antiga. mais dados em menos consultas…
anote algumas classes com eager para teste…

furacao123

a versao do SpringFlex para integrar com Spring 3 resolve esse problema do lazy?

Criado 10 de fevereiro de 2011
Ultima resposta 11 de fev. de 2011
Respostas 6
Participantes 3