Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring 3.1.1 with hibernate 4.1 annotations configuration

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

like image 547
Parthi Avatar asked Apr 25 '12 12:04

Parthi


1 Answers

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.

like image 103
danny.lesnik Avatar answered Oct 10 '22 01:10

danny.lesnik