2016-03-28 13 views
3

Hazırda bekletme ile çalışan bir Spring uygulaması var. Hazırda bekletme oturumu oluşturma işlemi gerçekleşmiyor.it
[konsol hatası] [1] : http://i.stack.imgur.com/Mb0Ah.png
Benim memuru kod olarakSpring MVC & Hibernate Geçerli iş parçacığı için işlem senkronize oturumu elde edilemedi

izleyin olarak

<?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> 

Benim fasulye sınıfı

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; 
    } 

} 

My bahar kontrolörü aşağıda

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; 
    } 

} 

Lütfen yardım isteyin .. !!!

cevap

4
@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"; 
    } 
  1. Denetleyiciniz yöntemiyle @Transactional ekle
  2. kullanıcı sınıfına @EnableTransactionManagement silmek

Deneyin, ben size

+0

teşekkürler teşekkürler. İşe yaradı. Bu çok harika. Bu iki ifadeyi açıklayabilir misiniz? Bu bana –

+0

hoşgeldiniz :) bana çok yararlı olurdu :) –

1

BaseController sınıfınızda getRespnse(Model m) ürününe @Transactional özniteliği ekleyin ve aşağıdaki gibi deneyin.

@RequestMapping(value="/") 
@Transactional 
public String getRespnse(Model m) { 
    Session session =sessionFactory.getCurrentSession(); 
+0

@RajasekarRamalingam 'için çalışacağını düşünüyorum İşlem 'açıklaması, Spring'in bildirimsel işlem yönetimi özelliğini kullanmak istediğimizi belirtmesine izin verir. Bu yüzden bir işlem yaratma, taahhüt etme veya geri alma konusunda endişelenmemize gerek yok. Ve hazırda bekletme yeni bir oturum oluştururken aktif bir işlem arar. "EnableTransactionManagement" öğesinin "User" sınıfından kaldırılmasıyla ilgili olarak - Spring yapılandırma dosyası zaten bu açıklamaya eşdeğer olan karakterine sahiptir. İki kez tanımlamaya gerek yok. Emin değil, iki kez tanımlamak herhangi bir sorun neden olabilir, AFAIK, –

+0

sizin için teşekkürler :) –

İlgili konular