Bonjour tous le monde:

Mon service DAO est le suivant:

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
 
@Repository
public class CapitalisationEnDeviseDaoImpl extends DaoBase<Long, CapitalisationEnDevise> implements CapitalisationEnDeviseDao {
 
    @SuppressWarnings("unchecked")
    @Override
    @Transactional(readOnly = true)
    public List<CapitalisationDto> recupererTraitementParContratId(long contratId) {
        Map<String, Object> params = new HashMap<String, Object>();
        StringBuilder queryStr = new StringBuilder();
        queryStr
                .append("select new ma.wafaassurance.wassil.finmgt.dao.impl.CapitalisationEnDeviseDaoImpl$CapitalisationTraitement"
                        + "(ced.typeOperation,ced.montantNetEpargne,ced.dateValeur,rrd.montantReserveGlobale,rrd.exercice,rrd.support.id,ced.support.id)");
 
        queryStr.append("from CapitalisationEnDevise as ced");
        queryStr.append(", MouvementFinancier as mf");
        queryStr.append(", Contrat as contrat");
        queryStr.append(",ReserveRevaloriseeDevise as rrd");
        queryStr.append(" where 1=1");
        queryStr.append(" and ced.mouvement.id = mf.id");
        queryStr.append(" and mf.contrat.id = contrat.id");
        queryStr.append(" and rrd.contrat.id = contrat.id");
        queryStr.append(" and rrd.support.id = ced.support.id");
        queryStr.append(" and contrat.id = :contratId");
 
        Query query = getCurrentSession().createQuery(queryStr.toString());
 
        query.setParameter("contratId", contratId);
 
        List<CapitalisationDto> capisEnDevise = (List<CapitalisationDto>) query.list();
        return capisEnDevise;
    }
 
    public static class CapitalisationTraitement extends CapitalisationDto {
 
        public CapitalisationTraitement(TypeOperation typeOperation, MonetaryQuantity montantNetEpargne, Date dateValeur,
                MonetaryQuantity montantReserveGlobale, Integer exercice, Long rrdSupportId, Long cedSupportId) {
            setDateValeur(dateValeur);
            setExercice(exercice);
            setMontantNetEpargne(montantNetEpargne);
            setMontantReserveGlobale(montantReserveGlobale);
            setSupportIdCed(cedSupportId);
            setSupportIdRrd(rrdSupportId);
            setTypeOperation(typeOperation);
        }
 
        public CapitalisationTraitement(TypeOperation typeOperation) {
            setTypeOperation(typeOperation);
        }
 
    }
 
}
La liste de CapitalisationDto: capisEnDevise content des attributs de CapitalisationEnDevise et de ReserveRevaloriseeDevise .ces derniers peuvent être NULL(soit CapitalisationEnDevise OU ReserveRevaloriseeDevise ).

Alors,quand c'est le cas ,ce n'est pas possible de faire rrd.support.id ou null.support.id.

Y a t'il pas un moyen permettant de résoudre ce problème?

Merci infiniment de votre aide.