Bonjour,

j'ai le code suivant (appellé dans une transaction) qui me produit une NonUniqueObjectException.

Je crée un objet Tome. Si il n'existe pas déjà en BD je fais appel à hibernateTemplate.save(), si il existe déjà je fais appel à saveOrUpdate().
Seulement voilà, dans le cas du saveOrUpdate() j'obtiens une NonUniqueObjectException et je n'arrive pas à comprendre pourquoi.

En aucun cas je ne récupère le tome existant de la BD avant de faire appel à createTome(), donc je ne vois pas comment je pourrais avoir 2 objets de type Tome référencant la même entité.

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
 
public void createTome(String label) {
 
  tome = new Tome();
  tome.setLabel(label);
  saveTome(tome) 
 
}
 
public void saveTome(Tome tome) {
  String existingTomeId = exist(tome);
  if ( existingTomeId != null ) {
      tome.setId(existingTomeId);
      hibernateTemplate.saveOrUpdate(tome); // --> NonUniqueObjectException
  }
  else {
    hibernateTemplate.save(tome);
  }
}
 
public String exist(Tome tome) {
 
  Tome existingTome = null;
 
  List<Tome> list = hibernateTemplate.find("from Tome where label = ?", tome.getLabel());
  if (list.size != 0) {
    existingTome = list.get(0);
  } 
 
  return existingTome.getId();
}
Merci d'avance pour toute aide