大佬教程收集整理的这篇文章主要介绍了Spring Hibernate-无法获得当前线程的事务同步会话,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
您必须 交易支持(<tx:Annotation-driven>
或@EnabletransactionManagement
)并 ,transactionManager
并且它应通过进行工作SessionFactory
。
您必须添加@transactional
到您的@Repository
随着@transactional
在你的@Repository
spring是能够应用的事务处理支持到你的资料库。
您的student
类没有@ javax.persistence。*注释how @Entity
,我假设该类的映射配置已通过XML定义。
我使用spring +
hibernate创建了一个应用程序,但始终会收到此错误。这是我第一个使用hibernate的应用程序,我阅读了一些指南,但无法解决此问题。我在哪里做错了?
这是我的应用程序的代码
ott 05,2014 4:03:06 PM org.springframework.context.support.ClassPathXmlApplicationContext preparerefresh
Informazioni: refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1eab16b: startup date [Sun Oct 05 16:03:06 CEST 2014]; root of context hierarchy
ott 05,2014 4:03:06 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
Informazioni: Loading XML bean definitions from class path resource [springConfig.xml]
ott 05,2014 4:03:08 PM org.hibernate.Annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCAnn000001: Hibernate Commons Annotations {4.0.5.Final}
ott 05,2014 4:03:08 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.3.6.Final}
ott 05,2014 4:03:08 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
ott 05,2014 4:03:08 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
ott 05,2014 4:03:09 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
ott 05,2014 4:03:09 PM org.hibernate.ENGIne.transaction.internal.transactionFactoryInitiator initiateservice
INFO: HHH000399: Using default transaction strategy (direct JDBC transactions)
ott 05,2014 4:03:09 PM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
Exception in thread "main" org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
at org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:134)
at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1014)
at coreservlets.studentDAOImpl.create(studentDAOImpl.java:19)
at coreservlets.MainApp.main(MainApp.java:14)
学生.java
package coreservlets;
public class student {
private Integer id;
private String name;
private Integer age;
public Integer getId(){return id;}//getId
public void setId(Integer id){this.id=id;}//setId
public String getName(){return name;}//getName
public void setName(String Name){this.name=name;}//setName
public Integer getAge(){return age;}//getAge
public void setAge(Integer agE){this.age=age;}//setAge
}//student
学生DAO.java
package coreservlets;
import org.hibernate.SessionFactory;
public interface studentDAO {
public void setSessionFactory(SessionFactory sessionFactory);
public void create(String name,Integer agE);
}//studentDAO
package coreservlets;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.Annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class studentDAOImpl implements studentDAO {
private SessionFactory sessionFactory;
@Autowired
public void setSessionFactory(SessionFactory sessionFactory){
this.sessionFactory=sessionFactory;
}//setSessionFactory
public void create(String name,Integer agE){
Session session=sessionFactory.getCurrentSession();
student student=new student();
student.setName(Name);
student.setAge(agE);
session.save(student);
}//create
}//studentDAOImpl
@H_144_2@mainApp.java
package coreservlets;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("springConfig.xml");
studentDAOImpl student=(studentDAOImpl) context.getBean("studentDAOImpl");
student.create("Alessandro",new Integer(33));
}//main
}//MainApp
springConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/scheR_476_11845@a/beans"
xmlns:xsi="http://www.w3.org/2001/XMLscheR_476_11845@a-instance"
xmlns:context="http://www.springframework.org/scheR_476_11845@a/context"
xmlns:mvc="http://www.springframework.org/scheR_476_11845@a/mvc"
xsi:scheR_476_11845@aLOCATIOn="http://www.springframework.org/scheR_476_11845@a/beans http://www.springframework.org/scheR_476_11845@a/beans/spring-beans-4.1.xsd
http://www.springframework.org/scheR_476_11845@a/context http://www.springframework.org/scheR_476_11845@a/context/spring-context-4.1.xsd
http://www.springframework.org/scheR_476_11845@a/mvc http://www.springframework.org/scheR_476_11845@a/mvc/spring-mvc-4.1.xsd">
<context:Annotation-config/>
<context:component-scan base-package="coreservlets"/>
<bean id="datasource" class="org.apache.commons.dbcp2.basicDatasource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/spring_hibernate"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
<property name="initialSize" value="5"/>
<property name="max@R_422_10586@l" value="10"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="datasource" ref="datasource"/>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
</value>
</property>
</bean>
</beans>
sql
create table student
(
id integer not null auto_increment,name varchar(20) NOT NULL,age integer not null,PRIMARY KEY(ID)
);
以上是大佬教程为你收集整理的Spring Hibernate-无法获得当前线程的事务同步会话全部内容,希望文章能够帮你解决Spring Hibernate-无法获得当前线程的事务同步会话所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。