Bonjour à tous!
Je suis bloqué depuis un petit moment sur problème qui me pose bien des soucis!
Je dois mettre à jour un objet en bdd, en m'assurant au passage qu'un de ses attributs n'est pas déjà utilisé.
Voici le code en question :
Le problème est que je me retrouve avec une exception LazyInitializationException lorsque je fais "dao.merge(client);"
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 public Customer saveCustomer(Customer customer) { Partner p = partnerDao.findByCode(Partner.APPLICATION_CODE); customer.setPartner(p); // Vérification de l'unicité du numéro de client dao.evict(customer); Customer c = dao.findByIdentifier(customer.getIdentifier()); if ((c != null) && (!customer.getId().equals(c.getId()))) { throw new DataIntegrityException("Non unique customer identifier"); } customer = dao.merge(customer); return customer; }
Je ne comprends absolument pas...
La configuration des mes transactions est correct (je n'ai jamais eu de problèmes jusque là), mes cascades sont également correctement configurés...
Je peux fournir ma configuration si besoin.
Le plus incompréhensible est que si je déplace "dao.evict(client);" en première ligne de la méthode, tout marche parfaitement...
Pour info j'ai implémenté la méthode "evict" comme indiqué sur les forums hibernate (mais si je fais un clear, j'ai de toute façon le même problème).
Est-ce que quelqu'un a une idée ?
Merci d'avance.
Partager