Bonjour,
j'ai un soucis lorsque je supprime un enregistrement, mon PAG (Pilote d'acte de gestion) appelle un CM (composant métier) qui lui même appelle un DAO dans lequel j'ai cette méthode :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public void deleteTest(ExecutionContext executionContext,
GestionnaireGedWfTransferObject gestionnaireTO) throws PersistenceException {
Session session = getSession();
session.clear();
try {
// Test Mapper le TO en EO. A partir de là, récupérer la clé de l'EO et le détruire
GestionnaireGedWf gestionnaireGedWf = getBeanMapper().map(gestionnaireTO, GestionnaireGedWf.class);
// GestionnaireGedWfId gestionnaireGedWfId = gestionnaireGedWf.getId();
session.delete(gestionnaireGedWf);
session.flush();
}
catch (BeanMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} |
Je suis obligé d'appeler la méthode flush() afin que les données soient bien supprimées de la base.
Lorsque je reboucle sur ma page j'appelle cette méthode afin de rafraîchir la page :
private static final String HQL_LIRE = "from GestionnaireGedWf g ";
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
| @SuppressWarnings("unchecked")
public List<GestionnaireGedWfTransferObject> rechercher(ExecutionContext executionContext)
throws PersistenceException {
Session session = getSession();
Query query = session.createQuery(HQL_LIRE);
List<GestionnaireGedWf> listeEO = (List<GestionnaireGedWf>) query.list();
List<GestionnaireGedWfTransferObject> retour = new ArrayList<GestionnaireGedWfTransferObject>();
for (GestionnaireGedWf entityObject : listeEO) {
try {
GestionnaireGedWfTransferObject transferObject = getBeanMapper().map(entityObject, GestionnaireGedWfTransferObject.class);
retour.add(transferObject);
}
catch (BeanMappingException e) {
// LOGGER.debug(executionContext, "LAUNCH : BeanMappingException()",getClass().getName() );
final PersistenceException persistenceException = new PersistenceException(executionContext, e.getMessage());
persistenceException.setStackTrace(e.getStackTrace());
throw persistenceException;
}
}
return retour;
} |
Même en rechargeant les données dans le support de persistance les données ne sont pas rafraîchies. je suis obligé de rafraîchir à nouveau la page afin qu'elles soient bien rafraîchies.
Quelqu'un peut-il m'éclairer car je ne suis pas sûr d'utiliser Hibernate à bon escient. Y'aurait-il un best practice d'hibernate sur le net ?
Partager