java – Spring MVC和Hibernate无法为当前线程获取事务同步的Ses
发布时间:2020-12-15 04:33:12 所属栏目:Java 来源:网络整理
导读:我有一个与hibernate一起工作的 Spring应用程序.hibernate的会话不是创建.如下所示抛出错误 [控制台错误] [1]: http://i.stack.imgur.com/Mb0Ah.png 我的调度员代码如下 ?xml version="1.0" encoding="UTF-8"?beans xmlns="http://www.springframework.org/
我有一个与hibernate一起工作的
Spring应用程序.hibernate的会话不是创建.如下所示抛出错误
[控制台错误] [1]: http://i.stack.imgur.com/Mb0Ah.png 我的调度员代码如下 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"> <context:component-scan base-package="com.oi.controller" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> <!-- data source --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" > <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:61391/springmvc2k" /> <property name="username" value="adminHYMgZHE" /> <property name="password" value="byIkcunaje5K" /> </bean> <!-- Hibernate SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> <property name="packagesToScan" value="com.oi.bean"></property> </bean> <!-- The transaction manager --> <tx:annotation-driven transaction-manager="transactionManager" /> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> </beans> 我的豆类 import javax.persistence.Column; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import org.hibernate.annotations.Entity; import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableTransactionManagement @Entity @Table(name="users") public class User { @Id @GeneratedValue int id; @Column(name = "username") String name; @Column(name = "password") String password; @Column(name = "email") String email; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } 我的弹簧控制器如下 import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import com.oi.bean.User; @Controller public class BaseController { @Autowired private SessionFactory sessionFactory; @RequestMapping(value="/") public String getRespnse(Model m) { Session session =sessionFactory.getCurrentSession(); // List<User> usrLst=(List<User>) session.createQuery("from User"); // System.out.println("IN"+usrLst); return "home"; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } } 请帮忙.继续.. !!! 解决方法@RequestMapping(value="/") @Transactional public String getRespnse(Model m) { Session session =sessionFactory.getCurrentSession(); // List<User> usrLst=(List<User>) session.createQuery("from User"); // System.out.println("IN"+usrLst); return "home"; } >使用您的控制器方法添加@Transactional 尝试一下,我想它会对你有用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |