2 Stimmen

Die Verwendung von HibernateTemplate führt zu 'org.hibernate.LazyInitializationException: konnte Proxy nicht initialisieren - keine Session'.

Ich möchte ein HibernateTemplate anstelle eines org.hibernate.Session-Objekts direkt verwenden. Leider verursacht die Verwendung eines HibernateTemplate die folgende Ausnahme:

org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:132)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:174)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
at com.els.fu.domain.entities.Contact_$$_javassist_67.getEmail(Contact_$$_javassist_67.java)
at com.els.fu.service.impl.FusionIIEnMasseService.test(FusionIIEnMasseService.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Hier ist ein Beispielcode:

try {
    session = sessionFactory.openSession();
    hibernateTemplate = new HibernateTemplate(sessionFactory);
    MyEntity myEntity = (MyEntity ) session.load(MyEntity.class, 15373482L);
    System.out.println("Test with session : " + myEntity.getEmail());
    myEntity = (MyEntity ) hibernateTemplate.load(MyEntity.class, 15373482L);
    System.out.println("Test with HibernateTemplate: " + myEntity.getEmail());
} finally {
    if (!sessionFactory.isClosed())
        sessionFactory.close();
}

Die Linie

System.out.println("Test with session : " + myEntity.getEmail())

ergibt das erwartete Ergebnis, aber die Zeile

System.out.println("Test with HibernateTemplate: " + myEntity.getEmail())

verursacht den oben erwähnten Fehler. Bitte haben Sie eine Idee für das Problem?

Weitere Elemente zur Konfiguration finden Sie hier:

<context:annotation-config />
<context:component-scan base-package="com.els" />
<!-- Enable @Transactional annotation -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- hibernate session factory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.connection.url">${hibernate.connection.url}</prop>
            <prop key="hibernate.connection.username">${hibernate.connection.username}</prop>
            <prop key="hibernate.connection.password">${hibernate.connection.password}</prop>
            <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
            <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
            <prop key="hibernate.max_fetch_depth">${hibernate.max_fetch_depth}</prop>
            <prop key="hibernate.default_batch_fetch_size">${hibernate.default_batch_fetch_size}</prop>
            <prop key="hibernate.generate_statistics">${hibernate.generate_statistics}</prop>
            <prop key="hibernate.use_sql_comments">${hibernate.use_sql_comments}</prop>
            <prop key="hibernate.c3p0.min_size">${hibernate.c3p0.min_size}</prop>
            <prop key="hibernate.c3p0.max_size">${hibernate.c3p0.max_size}</prop>
            <prop key="hibernate.c3p0.timeout">${hibernate.c3p0.timeout}</prop>
            <prop key="hibernate.c3p0.max_statements">${hibernate.c3p0.max_statements}</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            <prop key="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</prop>
            <prop key="connection.useUnicode">true</prop>
            <prop key="connection.characterEncoding">utf-8</prop>
            <prop key="hibernate.default_entity_mode">pojo</prop>
            <prop key="hibernate.bytecode.use_reflection_optimizer">true</prop>
            <prop key="hibernate.cache.use_second_level_cache">true</prop>
            <prop key="hibernate.cache.use_query_cache">true</prop>
            <!-- <prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</prop> -->
            <prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</prop>
            <prop key="hibernate.cache.use_minimal_puts">false</prop>
            <prop key="hibernate.cache.use_structured_cache">false</prop>
            <prop key="net.sf.ehcache.configurationResourceName">ehcache.xml</prop>
        </props>
    </property>
</bean>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X