Bonjour,

j'essaye de modifier un objet médicament dans mon appli qui est lié à un autre objet DCI , donc normalement quant je modifie mon médicament avec ma méthode MAJmedicament() je retourne un objet médicament modifié alors il doit modifié mon objet DCI. donc quant j'essaye de fair un saveorUpdate() il plante avec l'erreur identifier of an instance com.......of was altered from 48 to 127.

vous avez une idée ???

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
 
public Message validate(List listeValidation) throws DatabaseFailureException {
		int statut = 0;
		String cleDci = null;
		Iterator iter = null;
		Map mapDci = new HashMap();
		Message message = null;
		// EVOL MJE --
		List listeDciMed = new ArrayList();
		List listeDciMedAnciens = new ArrayList();
		String EAN13_NULL = "";
		String flag = "";
		Medicament medicament = null;
		//Medicament medicamentOld = null;
		Iterator iterator = listeValidation.iterator();
 
 
 
 
		if (ConstantesGestion.VALIDE == statut && !mapDci.isEmpty()) {
			// Mise à jour des taux des médicaments
			List listMedicament = this.dciDAO.listMedicamentByListDci(mapDci.keySet());
			if (listMedicament != null) {
				Map mapMed = new HashMap();
				Date dateFinRbst = null;
				//
				CompositionDci compositionDci = null;
				Dci dci = null;
				//
				iterator = listMedicament.iterator();
 
				while (iterator.hasNext()) {
 
					medicament = (Medicament) iterator.next();
 
					MAJmedicament(medicament);
 
					this.dciDAO.save(medicament);
 
					if (!mapMed.containsKey(medicament.getId())) {
						mapMed.put(medicament.getId(), null);
						dateFinRbst = null;
						iter = medicament.getCompositionDciSet().iterator();
						while (iter.hasNext()) {
							compositionDci = (CompositionDci) iter.next();
							dci = compositionDci.getId().getDci();
							String dosage = "";
							if (dci.getDosage() != null) {
								dosage = dci.getDosage();
							}
							String unite = "";
							if (dci.getUniteDosage() != null) {
								unite = dci.getUniteDosage().getId().toString();
							}
							cleDci = dci.getDciDenomination().getId()+"-"+dosage+"-"+unite+"-"+dci.getFormeAdmin().getId();
							if (mapDci.containsKey(cleDci)) {
								if (dci.getDateFinRbst() != null && (dateFinRbst == null || dateFinRbst.after(dci.getDateFinRbst()))) {
									dateFinRbst = dci.getDateFinRbst();
								}
							     DciBean dciBean = (DciBean) mapDci.get(cleDci);
 
								compositionDci.getId().getDci().setId(dciBean.getId());
 
								this.dciDAO.saveOrUpdate(compositionDci);
							}
						}
 
 
						// calcul du taux de remboursement.
						if (!medicament.getTauxRbstForce().booleanValue()) {
							if (isRemboursable(medicament)) {
								//if (ConstantesGestion.TAUX_REMBOURSEMENT_0.equals(medicament.getTauxRemboursement().getId().toString())) {
									TauxRemboursement tauxRemboursement = new TauxRemboursement();
									//medicament.setIdTauxRemboursement(dci.getTauxRemboursement().getId().toString());
									tauxRemboursement.setId(new Integer(dci.getTauxRemboursement().getId().toString()));
									tauxRemboursement.setLibelle(dci.getTauxRemboursement().getLibelle());
									medicament.setTauxRemboursement(tauxRemboursement);
									//medicament.setTauxRemboursement(tauxRemboursement);
									medicament.setDateFinRbstPPM(null);
									medicament.setDateFinRbstPHM(null);
									medicament.setMotifFinRbstPPM(null);
									medicament.setMotifFinRbstPHM(null);
									this.dciDAO.saveOrUpdate(medicament);
 
									//this.majMedicament(medicament, listeDciMed, message);
								//}
							} else {
								if (medicament.getDateFinRbstPPM() == null && medicament.getDateFinRbstPHM() == null) {
									TauxRemboursement tauxRemboursement = new TauxRemboursement();
									//tauxRemboursement.setId(new Integer(ConstantesGestion.TAUX_REMBOURSEMENT_0));
									//medicament.setTauxRemboursement(tauxRemboursement);
									tauxRemboursement.setId(new Integer(dci.getTauxRemboursement().getId().toString()));
									tauxRemboursement.setLibelle(dci.getTauxRemboursement().getLibelle());
									medicament.setTauxRemboursement(tauxRemboursement);
									medicament.setDateFinRbstPHM(dateFinRbst);
									medicament.setDateFinRbstPPM(dateFinRbst);
									MotifFinRemboursement motifFinRbst = new MotifFinRemboursement();
									motifFinRbst.setId(Integer.valueOf(ConstantesGestion.MOTIF_FIN_RBST_DCI_NON_REMBOURSABLE));
									medicament.setMotifFinRbstPHM(motifFinRbst);
									medicament.setMotifFinRbstPPM(motifFinRbst);
									//AZE
 
									this.dciDAO.saveOrUpdate(medicament);
 
									//this.majMedicament(medicament, listeDciMed, message);
								}
							}
						}
						// calcul du taux d'exoneration.
						if (isExonere(medicament)) {
							if (ConstantesGestion.TAUX_EXONERATION_0.equals(medicament.getTauxExoneration().getId().toString())) {
								TauxExoneration tauxExoneration = new TauxExoneration();
								tauxExoneration.setId(new Integer(ConstantesGestion.TAUX_EXONERATION));
								medicament.setTauxExoneration(tauxExoneration);
 
 
								this.dciDAO.saveOrUpdate(medicament);
							}
						} 
						else if (!ConstantesGestion.TAUX_EXONERATION_0.equals(medicament.getTauxExoneration().getId().toString())) {
							TauxExoneration tauxExoneration = new TauxExoneration();
							tauxExoneration.setId(new Integer(ConstantesGestion.TAUX_EXONERATION_0));
							medicament.setTauxExoneration(tauxExoneration);
//						
 
							this.dciDAO.saveOrUpdate(medicament);
						}
 
					}
				}
			}
		}
		return message;
	}