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 :

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
    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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
private static final String HQL_LIRE = "from GestionnaireGedWf g ";
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
    @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 ?