Bonsoir les amies.
je recois toujours la même erreur quand j'esseye d'integrer hibernate a spring No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here. Je me suis document sur internet et j'ai trouvé que je devais configuré les transaction c'est ce que j'esseye de faire mais j'y arrive pas:
Voici le fichier contexte:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
<?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:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
 
    <!--bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
          p:location="/WEB-INF/jdbc.properties" />
 
    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource"
          p:driverClassName="${jdbc.driverClassName}"
          p:url="${jdbc.url}"
          p:username="${jdbc.username}"
          p:password="${jdbc.password}" /-->
 
    <!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) -->
    <bean id="implementationProduit" class="akatsuki.domain.service.implProduit">
        <property name="productDao" ref="produitDaoHibernate"/>
    </bean>
 
    <bean id="produitDaoHibernate" class="akatsuki.domain.repositryimpl.ProduitDaoHibernate" >
        <property name="sessionFactory" ref="SessionFactory"/>
    </bean>
 
 
 
    <bean id="SessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
                <prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/achat</prop>
                <prop key="hibernate.connection.username">root</prop>
                <prop key="hibernate.connection.password">bankai</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            </props>
        </property>
 
    </bean>
 
    <bean id="TransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory"><ref local="SessionFactory"/></property>
    </bean>
 
    <bean id="transaction" abstract="true"
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
            <property name="target" ref="implementationProduit"/>
            <property name="transactionAttributes">
                <props>
                    <prop key="get*">PROPAGATION_REQUIRED</prop>
                </props>
            </property>
    </bean>
 
 
 
 
 
 
</beans>
j'ai ajouté le transactionFactoryBean et je lui est précise mon bean qui implemente ma classe service mais je recois toujours la même erreur.

voici aussi le code de la classe qui implemente mon dao:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
/*
 *
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
package akatsuki.domain.repositryimpl;
import akatsuki.domain.model.Produit;
import akatsuki.domain.repositry.ProductDao;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
/**
 *
 * @author hamza
 */
public class ProduitDaoHibernate implements ProductDao{
    private SessionFactory sessionFactory;
    public List<Produit> getProduits() {
        List<Produit>lst;
        lst=new ArrayList<Produit>();
        /*Produit p = new Produit();
        p.setId(11);
        p.setNom("Giggs");
        lst.add(p);*/
        Session session = sessionFactory.getCurrentSession();
        Query req = session.createQuery("select id,nom from Produit");
        FileWriter fw=null;
        try{
        fw = new FileWriter("D:\\n.txt");
        fw.write("l");
        fw.flush();
        fw.close();
        }catch(Exception e){
 
        }
        int i=0;
        for(Iterator it = req.iterate();it.hasNext();){
            Produit p = new Produit();
            Object[]ligne=(Object[])it.next();
            p.setId(Integer.parseInt(ligne[0].toString()));
            p.setNom(String.valueOf(ligne[1]));
            lst.add(p);
            try{
            fw.write(String.valueOf(i));
            fw.flush();
            fw.close();
            }
            catch(Exception e){
 
            }
        }
 
        return lst;
    }
 
    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }
 
 
}
L'erreur est au niveau de getCurrentSession().
Merci d'avance pour vos réponses.