Bonjour, je travaille avec Hibernate 2.1
Dans mon pb, j'ai une reunion (classe BDPR) qui possede un Set de decisions (BDDecisionPR), une classe d'association qui correspond à une liaison entre une réunion et une decision (BDDecision).
Lorsque je veux mettre à jour la liste des decisions d'une BDPR, je suis obligé dans un premier temps d'effacer tous les elements du Set de flusher, puis de creer autant de nouvelles liaisons que nécessaires :
Code:
SessionFactory sf = OutilHibernate.getSessionFactory();
session = sf.openSession();
Transaction tx = session.beginTransaction();
/*d'abord, il faut effacer toutes les liaisons existantes entre le PR et les decisions*/
Query query = session
.createQuery("from com.centiris.elise.bd.project.BDDecisionPR as dec where dec.pr.id = :idPR");
query.setLong("idPR", idPR);
for (Iterator iter = query.list().iterator(); iter.hasNext();)
{
BDDecisionPR dec = (BDDecisionPR) iter.next();
session.delete(dec);
}
session.flush();
/*maintenant, on rajoute les liaisions*/
for (Iterator iter = decisions.iterator(); iter.hasNext();)
{
Decision decision = (Decision) iter.next();
BDDecision decision2 = OutilDecision.getDecisionById(decision
.getId().longValue(), session);
BDPR bdpr = OutilPR.prById(idPR, session);
BDDecisionPR decisionPR = new BDDecisionPR();
decisionPR.setArchiver(false);
decisionPR.setPr(bdpr);
decisionPR.setDecision(decision2);
decisionPR.setOrdre((short) 0);
session.save(decisionPR);
}
tx.commit();
Existe-t-il une solution plus élégante - et surtout plus efficace - ? merci