identifier of an instance of was altered from 48 to 127
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:
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;
} |