带有 hibernate 4.1 注释配置的 Spring 3.1.1 [英] Spring 3.1.1 with hibernate 4.1 annotations configuration
问题描述
我正在使用 spring3.1.1 和 hibernate 4.1 设置新项目.当我运行我的项目时,我收到以下错误
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)
我的 applicationContext.xml
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();
}
}
我已经添加了我的依赖 jar,请给我建议
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.
对不起,我是 stackoverflow 的新手,我不知道如何重放命令
Sorry I am new to stackoverflow I don’t know how to give replay to the commands
推荐答案
这是因为您启用了休眠.current_session_context_class
属性启用
It happens becuase you have hibernate.current_session_context_class
property enabled
当将 Hibernate 与 Spring 结合使用会破坏正确的会话和事务管理时,永远不要使用该属性.只有在 JTA 环境中使用 Spring 和 Hibernate 时才需要设置此属性,否则不要使用它.
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.
这篇关于带有 hibernate 4.1 注释配置的 Spring 3.1.1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!