Je reçois LazyInitializationException avec le bean de session scoped dans ma couche de service. Si je charge le même bean en utilisant un dao normal dans ma méthode, je peux accéder à ses collections paresseuses sans problèmes. Mais si je l'injecte dans mon bean service, puis que j'essaie d'accéder à l'une de ses collections paresseuses, j'ai une exception LazyInitializationException. Je suis en train d'utiliser JPA + Hibernate + Spring + Struts. J'ai configuré OpenEntityManagerInViewFilter. De plus, je peux clairement voir dans les journaux que la transaction et la session sont ouvertes.LazyInitializationException avec le bean de session scoped
Y a-t-il quelque chose de spécial que je dois faire dans la configuration du bean de portée session avec des collections paresseuses?
Voici les journaux:
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter:lookupEntityManagerFactory:146 - Using EntityManagerFactory 'entityManagerFactory' for OpenEntityManagerInViewFilter
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter:doFilterInternal:101 - Opening JPA EntityManager in OpenEntityManagerInViewFilter
org.springframework.orm.jpa.JpaTransactionManager:doGetTransaction:285 - Found thread-bound EntityManager [[email protected]] for JPA transaction
org.springframework.transaction.support.AbstractPlatformTransactionManager:getTransaction:371 - Creating new transaction with name [com.xx.action.spring.service.SearchService.loadCurrencyCode]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly
org.hibernate.impl.SessionImpl:<init>:247 - opened session at timestamp: 5093202578464768
org.hibernate.transaction.JDBCTransaction:begin:82 - begin
org.hibernate.jdbc.ConnectionManager:openConnection:444 - opening JDBC connection
org.hibernate.transaction.JDBCTransaction:begin:87 - current autocommit status: true
org.hibernate.transaction.JDBCTransaction:begin:90 - disabling autocommit
org.springframework.orm.jpa.JpaTransactionManager:doBegin:348 - Exposing JPA transaction as JDBC transaction [SimpleConnectionHandle: [email protected]]
org.hibernate.LazyInitializationException:<init>:42 - could not initialize proxy - no Session
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:86)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:140)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
at com.xxx.api.jpa.bean.CurrencyBean_$$_javassist_29.getHtmlSymbol(CurrencyBean_$$_javassist_29.java)
Voici les configuration du haricot:
<bean id="currentUserBean" class="com.xxx.action.spring.CurrentUserBean" scope="session">
<aop:scoped-proxy />
</bean>
Merci, mais je n'utilise pas JSF. J'utilise Struts. –