Bonjour,

Oui encore une question sur ce sujet. Désolé mais si quelqu'un pouvait me donner une explication claire à un débutant ce serait sympathique.

Alors je me fais une petite appli de type magasin.
voici le service :
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
68
69
70
71
72
73
74
75
76
77
78
79
 
@Transactional
public class StoreManagerImpl implements StoreManager  {
 
    @Autowired
    private CustomerDAO customerDao;
 
    @Autowired
    private OrderDAO orderDao;
 
    @Autowired
    private ProductDAO productDao;
 
    public void setCustomerDao(CustomerDAO customerDao) {
        this.customerDao = customerDao;
    }
 
    public void setOrderDao(OrderDAO orderDao) {
        this.orderDao = orderDao;
    }
 
    public void setProductDao(ProductDAO productDao) {
        this.productDao = productDao;
    }
 
 
 
    @Transactional(readOnly=true)
    public Product getProduct(int Id) {
        return this.productDao.getProduct(Id);
    }
 
    public void addProduct(Product p) {
        this.productDao.addProduct(p);
    }
 
    public void delProduct(Product p) {
        this.productDao.delProduct(p);
    }
 
    public void updateProduct(Product p) {
        this.productDao.updateProduct(p);
    }
 
    @Transactional(readOnly=true)
    public Customer getCustomer(int Id) {
        return this.customerDao.getCustomer(Id);
    }
 
    public void addCustomer(Customer c) {
        this.customerDao.addCustomer(c);
    }
 
    public void delCustomer(Customer c) {
        this.customerDao.delCustomer(c);
    }
 
    public void updateCustomer(Customer c) {
        this.customerDao.updateCustomer(c);
    }
 
    @Transactional(readOnly=true)
    public Order getOrder(int Id) {
        return this.orderDao.getOrder(Id);
    }
 
    public void addOrder(Order o) {
        this.orderDao.addOrder(o);
    }
 
    public void delOrder(Order o) {
        this.orderDao.delOrder(o);
    }
 
    public void updateOrder(Order o) {
        this.orderDao.updateOrder(o);
    }
 
}

le client :
public class Customer extends Person implements Serializable {

@OneToMany(mappedBy="customer")
private Collection<Order> CommandeList = new HashSet<Order>();
..........................

l'appli rempli la base et à un moment je souhaites lister la collection commande d'un client du genre
((Customer) StoreManagerImpl.getCustomer(1).getCommandList().size

le hql du dao ne fait pas de join sur les objets associés.

donc j'ai une :

org.hibernate.LazyInitializationException: failed to lazily initialize a collection

Même si je passe par un lazy hibernet j'aurais la même erreur car c'est en réalité à un proxy de spring que je m'adresse et celui-ci aura fermé la session.

Donc comment faire pour lazy loader au niveau de spring ?

Ps : Corrigez-moi si j'ai dit des énormités mais pardonnez un pauvre débutant.