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é.
Merci d'avance pour toute aide
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(); }![]()
Partager