我正在使用spring3.1.1和hibernate 4.1设置新项目。当我运行项目时,出现以下错误
java.lang.NoSuchMethodError: org.hibernate.SessionFactory.getCurrentSession()Lorg/hibernate/classic/Session; at com.humancapital.dao.TestModelDAOImpl.getTestModelList(TestModelDAOImpl.java:22)
我的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>
@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(); } }
我添加了我的依赖罐,请建议我
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
请帮助我完成项目设置。请提出一些建议,在建立新项目结构时需要集中精力,在新项目结构中,为以后的升级而需要进行的更改较少。
抱歉,我是stackoverflow的新手,我不知道如何重播命令
这是因为您已hibernate。current_session_context_class启用属性
current_session_context_class
当将Hibernate与Spring结合使用会破坏适当的会话和事务管理时,切勿使用该属性。唯一要设置此属性的时间是,如果您在JTA环境中使用Spring和Hibernate,则不要使用它。