Bonjour,
Je suis entrain de réaliser des tests sur une méthode de mise à jour. Mais quand je l'exécute j'ai une DataAccessException :
Voilà le code de ma méthode de test (j'utilise JUnit pour les tests et Spring pour l'injection des dépendances)
Code : Sélectionner tout - Visualiser dans une fenêtre à part a different object with the same identifier value was already associated with the session: [domain.model.Clients#173]; nested exception is org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [domain.model.Clients#173]
Donc la mise à jour de clientAUpdater ne se fait pas. Ce qui suit est le code de la méthode de mise à jour d'un client, de la couche DAO de mon appli :
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 @Test public void testUpdateClient() { /** met à jour un client qui existe */ // ajout d'un nouveau client en vérifiant qu'il n'existe pas avant Clients clientAUpdater = new Clients("referenceTest2", "nomTest2", "adresseTest2", "adresseFacturationTest2", "adresseLivraisonTest2", "conditionsPaiementTest2", "telephoneTest2", "mailTest2", "numereoTest2"); boolean existePas = this.clientsManager.clientExiste(clientAUpdater .getNom()); assertFalse(existePas); this.clientsManager.sauvegarderClient(clientAUpdater); // mise à jour du client clientAUpdater.setAdresse(""); clientAUpdater.setAdresseFacturation(""); clientAUpdater.setMail(""); this.clientsManager.updateClient(clientAUpdater); // récupère les données du client mis à jour et on teste que les valeurs // du client mis à jour sont les mêmes que celle qui ont été passées. Clients clientUpdate = this.clientsManager.getClient("nomTest2"); assertEquals("", clientUpdate.getAdresse()); assertEquals("", clientUpdate.getAdresseFacturation()); assertEquals("", clientUpdate.getMail());
Quelqu'un peut-il me dire ce qui ne va pas dans ma méthode de test ?
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 public void updateSecteursActivite(SecteursActivite secteurActiviteAMettreAJour) { try { if (secteurActiviteAMettreAJour != null && !secteurActiviteAMettreAJour.getNom().equals("")) { // récupération de la session du secteur d'activité ou création d'une // nouvelle logger.info("mise à jour du secteur d'activité "+ secteurActiviteAMettreAJour.getNom()); // mise à jour du secteur d'activité grâce à hibernate : // autorisé grâce à "@Transactional (readOnly=false)" de la // couche service getHibernateTemplate().update(secteurActiviteAMettreAJour); } else { logger.error("Sur la méthode updateSecteursActivite"); throw new IllegalArgumentException( "méthode updateSecteursActivite : secteurActiviteAMettreAJour null !"); } } catch (DataAccessException e) { logger.error("Exception - DataAccesException : " + e.getMessage() + " sur la méthode updateSecteursActivite"); } }
En vous remerciant,
Nicolas
Partager