程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Spring Hibernate-无法获得当前线程的事务同步会话大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Spring Hibernate-无法获得当前线程的事务同步会话?

开发过程中遇到Spring Hibernate-无法获得当前线程的事务同步会话的问题如何解决?下面主要结合日常开发的经验,给出你关于Spring Hibernate-无法获得当前线程的事务同步会话的解决方法建议,希望对你解决Spring Hibernate-无法获得当前线程的事务同步会话有所启发或帮助;

您必须 交易支持(<tx:Annotation-driven>@EnabletransactionManagement)并 ,transactionManager并且它应通过进行工作SessionFactory

您必须添加@transactional到您的@Repository

随着@transactional你的@Repositoryspring是能够应用的事务处理支持到你的资料库。

您的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

studentDAOImpl.java

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,请注明来意。