Je progresse, mais ce n'est pas encore ça...
Avec le code ci-dessous, c'est à dire avec une nativeQuery, je n'ai plus d'erreur et la page d'accueil de l'étudiant s'affiche.
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
| case 3 : // Étudiant
log.info("authenticating {0} - Authentifié en tant qu'étudiant");
setNom(user.getPrsNom());
setPrenom(user.getPrsPrenom());
setPageSuivante("/accueilEtudiant.xhtml");
// Recherche si l'étudiant est déjà inscrit à un stage
/*Query q = entityManager.createQuery(
"SELECT thStageStg " +
"FROM ThStageStg thStageStg " +
"JOIN thStageStg.teEtablissementEtb etb " +
"JOIN etb.trCommuneCmn c " +
"JOIN c.trDepartementDpt d " +
"JOIN thStageStg.thCandidatCnds cnd " +
"WHERE cnd.utiLogin = :login ");*/
Query q = entityManager.createNativeQuery(
"SELECT ssn.ssn_libelle, ssn.ssn_date_debut, ssn.ssn_date_fin, " +
"e.etb_nom, c.cmn_nom, d.dpt_numero " +
"FROM th_stage_stg AS stg " +
"INNER JOIN te_etablissement_etb AS e ON e.etb_id = stg.stg_id_etablissement " +
"INNER JOIN tr_commune_cmn AS c ON c.cmn_id = e.etb_id_commune " +
"INNER JOIN tr_departement_dpt AS d ON d.dpt_id = c.cmn_id_departement " +
"INNER JOIN te_session_ssn AS ssn ON ssn.ssn_id = stg.stg_id_session " +
"INNER JOIN tj_cnd_inscrire_ssn_cis AS cis ON cis.cis_id_session = ssn.ssn_id " +
"INNER JOIN th_candidat_cnd AS cnd ON cnd.cnd_id_utilisateur = cis_id_candidat " +
"INNER JOIN th_utilisateur_uti AS u ON u.uti_id_personne = cnd.cnd_id_utilisateur " +
"WHERE u.uti_login = :login "
);
//q.setParameter("login", user.getUtiLogin());
q.setParameter("login", "etutest");
//stage = (ThStageStg) q.getSingleResult();
setStage((Object) q.getSingleResult());
log.info("authenticating {0} - après requête sur le stage");
return true; |
Le cast en Objet est le seul que j'aie réussi à faire fonctionner.
J'exporte l'objet stage de la façon suivante :
1 2
| @Out(required=false, scope=ScopeType.CONVERSATION)
private Object stage; |
Je le récupère dans AccueilEtudiant.java de la façon suivante :
@In(required=false) Object stage;
Et dans la page AccueilEtudiant.xhtml, j'ai fait ceci :
1 2
| <h:outputText value="Vous êtes inscrit au stage X"
rendered="#{not empty accueilEtudiant.stage}" /> |
Mais le texte ne s'affiche pas alors que mon etutest est bel et bien inscrit à un stage.
J'ai essayé avec empty et le texte s'affiche, ce qui tend à prouver que l'objet récupéré est vide.
Une idée ?
EDIT : J'aimerais aussi savoir comment je récupère les infos qui sont dans l'objet, c'est à dire les données du stage, pour les afficher à la place de X. Sinon tout ce machin ne sert à rien !
Partager