Spring / Hibernate / JUnit - No Hibernate Session bound to Thread

Posted by Marty Pitt on Stack Overflow See other posts from Stack Overflow or by Marty Pitt
Published on 2009-04-09T15:00:10Z Indexed on 2010/06/14 21:12 UTC
Read the original article Hit count: 338

Filed under:
|
|

Hi

I'm trying to access the current hibernate session in a test case, and getting the following error:

org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here at org.springframework.orm.hibernate3.SpringSessionContext.currentSession(SpringSessionContext.java:63) at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:574)

I've clearly missed some sort of setup, but not sure what.

Any help would be greatly appreciated. This is my first crack at Hibernate / Spring etc, and the learning curve is certainly steep!

Regards

Marty

Code follows:

The offending class:

public class DbUnitUtil extends BaseDALTest {
    @Test
    public void exportDtd() throws Exception
    {

    	Session session = sessionFactory.getCurrentSession();

    	session.beginTransaction();
        Connection hsqldbConnection = session.connection(); 

        IDatabaseConnection connection = new DatabaseConnection(hsqldbConnection);

        // write DTD file
        FlatDtdDataSet.write(connection.createDataSet(), new FileOutputStream("test.dtd"));
    }
}

Base class:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
public class BaseDALTest extends AbstractJUnit4SpringContextTests {
    public BaseDALTest()
    {
    	super();
    }
    	@Resource
    	protected SessionFactory sessionFactory;
}

applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    	<property name="driverClassName">
    		<value>org.hsqldb.jdbcDriver</value>
    	</property>
    	<property name="url">
    		<value>jdbc:hsqldb:mem:sample</value>
    	</property>
    	<property name="username">
    		<value>sa</value>
    	</property>
    	<property name="password">
    		<value></value>
    	</property>
    </bean>

    <bean id="sessionFactory" class="com.foo.spring.AutoAnnotationSessionFactoryBean">
    	<property name="dataSource" ref="dataSource" />
    	<property name="entityPackages">
    		<list>
    			<value>com.sample.model</value>
    		</list>
    	</property>
    	<property name="schemaUpdate">
    		<value>true</value>
    	</property>
    	<property name="hibernateProperties">
    		<props>
    			<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect
    			</prop>
    			<prop key="hibernate.show_sql">true</prop>
    		</props>
    	</property>
    </bean>
</beans>

© Stack Overflow or respective owner

Related posts about hibernate

Related posts about spring