Bonjour,
La requête suivante fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
    // Requête d'extraction des stages
    private static final String EJBQL = 
        "SELECT thStageStg " +
        "FROM ThStageStg thStageStg, " +
            "IN(thStageStg.teDisciplineDscs) dsc, " +
            "IN(dsc.teConcoursCcrs) ccr, " +
            "IN(ccr.thEtudiantEtus) etu " +
            "LEFT JOIN thStageStg.thCandidatCnds cis";
Avec cette restriction aussi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
    // Restriction sur les stages de la discipline du concours passé par l'étudiant
    private static final String[] RESTRICTIONS = {
        "etu.utiLogin = #{credentials.username}"};
Mais en ajoutant une deuxième restriction de manière à n'avoir que les stages dans lesquels la capacité n'est pas pleine, je n'ai pas d'erreur mais le résultat n'est pas bon, j'ai aussi les stages déjà pourvus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
    // Restriction sur les stages de la discipline du concours passé par l'étudiant
    private static final String[] RESTRICTIONS = {
        "etu.utiLogin = #{credentials.username}",
        "(SELECT COUNT(cis.cndIdUtilisateur) " +
        "FROM cis " +
        "WHERE cis.cndIdUtilisateur = thStageStg.stgIdSession) < #{thStageStg.ssnCapacite}"};
Dans le log, on dirait que la seconde restriction n'est pas prise en compte :
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
Hibernate: 
    select
        thstagestg0_.stg_id_session as ssn1_9_,
        thstagestg0_1_.ssn_capacite as ssn2_9_,
        thstagestg0_1_.ssn_code as ssn3_9_,
        thstagestg0_1_.ssn_date_debut as ssn4_9_,
        thstagestg0_1_.ssn_date_fin as ssn5_9_,
        thstagestg0_1_.ssn_libelle as ssn6_9_,
        thstagestg0_.stg_id_etablissement as stg2_14_,
        thstagestg0_.stg_id_conseiller_pedago as stg3_14_ 
    from
        stamas.th_stage_stg thstagestg0_ 
    inner join
        stamas.te_session_ssn thstagestg0_1_ 
            on thstagestg0_.stg_id_session=thstagestg0_1_.ssn_id 
    inner join
        stamas.tj_stg_concerner_dsc_scd tediscipli1_ 
            on thstagestg0_.stg_id_session=tediscipli1_.scd_id_stage 
    inner join
        stamas.te_discipline_dsc tediscipli2_ 
            on tediscipli1_.scd_id_discipline=tediscipli2_.dsc_id 
    inner join
        stamas.te_concours_ccr teconcours3_ 
            on tediscipli2_.dsc_id=teconcours3_.ccr_id_discipline 
    inner join
        stamas.th_etudiant_etu thetudiant4_ 
            on teconcours3_.ccr_id=thetudiant4_.etu_id_concours 
    inner join
        stamas.th_candidat_cnd thetudiant4_1_ 
            on thetudiant4_.etu_id_candidat=thetudiant4_1_.cnd_id_utilisateur 
    inner join
        stamas.th_utilisateur_uti thetudiant4_2_ 
            on thetudiant4_.etu_id_candidat=thetudiant4_2_.uti_id_personne 
    inner join
        stamas.te_personne_prs thetudiant4_3_ 
            on thetudiant4_.etu_id_candidat=thetudiant4_3_.prs_id 
    left outer join
        stamas.tj_cnd_inscrire_ssn_cis thcandidat5_ 
            on thstagestg0_.stg_id_session=thcandidat5_.cis_id_session 
    left outer join
        stamas.th_candidat_cnd thcandidat6_ 
            on thcandidat5_.cis_id_candidat=thcandidat6_.cnd_id_utilisateur 
    left outer join
        stamas.th_utilisateur_uti thcandidat6_1_ 
            on thcandidat6_.cnd_id_utilisateur=thcandidat6_1_.uti_id_personne 
    left outer join
        stamas.te_personne_prs thcandidat6_2_ 
            on thcandidat6_.cnd_id_utilisateur=thcandidat6_2_.prs_id 
    where
        thetudiant4_2_.uti_login=? limit ?