Spring 3.1.1 with hibernate 4.1 annotations configuration

annotations, hibernate, java, spring

Solution

It happens becuase you have hibernate.`current_session_context_class` property enabled

you should NEVER use that property when combining Hibernate with Spring that destroys proper session and transaction management. The only time you want to set this property is if you use Spring and Hibernate in a JTA environment, else don't use it.

Problem

I am setting up the new project with spring3.1.1 and hibernate 4.1. When I run my project I am getting the following error ``` java.lang.NoSuchMethodError: org.hibernate.SessionFactory.getCurrentSession()Lorg/hibernate/classic/Session; at com.humancapital.dao.TestModelDAOImpl.getTestModelList(TestModelDAOImpl.java:22) ``` My applicationContext.xml ``` <?xml version="1.0" encoding="UTF-8"?> <context:component-scan base-package="com.example"/> <!-- Use @Transaction annotations for managing transactions --> <tx:annotation-driven transaction-manager="transactionManager"/> <!-- PropertyConfiguer --> <bean id="propertyCongigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="/WEB-INF/config/jdbc/jdbc.properties"></property> </bean> <!-- DataSource connection --> <bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- Hibernate SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="myDataSource"></property> <property name="annotatedClasses"> <list> <value>com.humancapital.dao.TestModel</value> </list> </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> </props> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <context:annotation-config/> <bean id="testModelDAO" class="com.example.dao.TestModelDAOImpl"></bean> ``` MyDAOImpl ``` @Repository public class TestModelDAOImpl implements TestModelDAO { @Autowired private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory){ this.sessionFactory = sessionFactory; } @SuppressWarnings("rawtypes") @Override @Transactional(readOnly=true,propagation=Propagation.REQUIRES_NEW) public List getTestModelList() { System.out.println(sessionFactory.toString()); return sessionFactory.getCurrentSession().createCriteria(TestModel.class).list(); } } ``` I have added my dependency jars please suggest me ``` antlr-2.7.7.jar antlr-runtime-3.0.jar commons-collections-3.2.1.jar commons-dbcp-1.4.jar commons-fileupload-1.2.jar commons-lang-2.4.jar commons-logging.jar commons-pool-1.5.4.jar dom4j-1.6.1.jar ejb3-persistence-3.3.1.jar hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.1.Final.jar hibernate-entitymanager-4.1.1.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar hibernate-validator-4.0.2.GA.jar jackson-core-asl-1.9.2.jar jackson-jaxrs-1.8.5.jar jackson-mapper-asl-1.9.2.jar javassist-3.15.0-GA.jar jboss-logging-3.1.0.CR2.jar jboss-transaction-api_1.1_spec-1.0.0.Final.jar json-lib-2.3-jdk13.jar jstl-1.2.jar jta-1.1.jar log4j-1.2.14.jar mail.jar mysql-connector-java-5.0.8-bin.jar org.springframework.aop-3.1.1.RELEASE.jar org.springframework.asm-3.1.1.RELEASE.jar org.springframework.aspects-3.1.1.RELEASE.jar org.springframework.beans-3.1.1.RELEASE.jar org.springframework.context.support-3.1.1.RELEASE.jar org.springframework.context-3.1.1.RELEASE.jar org.springframework.core-3.1.1.RELEASE.jar org.springframework.expression-3.1.1.RELEASE.jar org.springframework.jdbc-3.1.1.RELEASE.jar org.springframework.jms-3.1.1.RELEASE.jar org.springframework.js-2.0.8.RELEASE.jar org.springframework.orm-3.1.1.RELEASE.jar org.springframework.oxm-3.1.1.RELEASE.jar org.springframework.test-3.1.1.RELEASE.jar org.springframework.transaction-3.1.1.RELEASE.jar org.springframework.web.servlet-3.1.1.RELEASE.jar org.springframework.web-3.1.1.RELEASE.jar servlet-api.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar slf4j-simple-1.6.1.jar spring-modules-validation-0.7.jar standard.jar ``` Please Help me to complete the project setup. Please give some suggestion where we need to concentrate while setting up the new project structure where fewer changes are necessary for future up gradation. Sorry I am new to stackoverflow I don’t know how to give replay to the commands

Original source