Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JPA/SERVLET/JSP] NamedQuery et date

Manipuler une date (année) dans une NamedQuery

Sujet résolu
    23 février 2020 à 11:50:55

    Bonjour à tous,

    je souhaite faire une NamedQuery pour une recherche par année, cependant je sèche un peu malgré mes recherches sur internet...

    La requête en question:

    query = "SELECT j FROM Journey j WHERE j.date = :date")

    Je voudrais pouvoir lui indiquer uniquement l'année et non une date complète.

    Si une âme charitable passe par là, merci d'avance.

    Edit: Bon pour l'instant j'ai ajouté une colonne où j'enregistre l'année seule dans ma table pour pouvoir filtrer, à défaut de trouver la solution.

    -
    Edité par Lao 23 février 2020 à 13:55:07

    • Partager sur Facebook
    • Partager sur Twitter
      23 février 2020 à 15:21:00

      Bonjour,

      avec JPQL tu peux faire appel à la fonction native de la BD. Par exemple pour MYSQL

       query = "SELECT j FROM Journey j WHERE function('YEAR', j.date)  = :date"


      Ensuite le paramètre à passer à ta requête est un objet Integer:

      Integer year=2020;
      entityManager.createNamedQuery("XXXXXX").setParameter("date",year);

       Message édité



      -
      Edité par armel.mc 23 février 2020 à 16:54:12

      • Partager sur Facebook
      • Partager sur Twitter
        23 février 2020 à 16:28:49

        Pour commencer, merci beaucoup d'avoir pris du temps pour m'aider.

        Edit: J'ai réussi à trouver mes dernières erreurs, merci infiniment pour ton aide!

        -
        Edité par Lao 23 février 2020 à 16:50:58

        • Partager sur Facebook
        • Partager sur Twitter
          23 février 2020 à 16:53:21

          désolé je fais appel à la variable YEAR qui n'existe pas. mais c'est plutôt year.

          tu passes le paramètre date( de type Integer ) au paramètre de la requête

          public List<Journey> findJourneysByYear(User user, Integer date) {
                  try {
                      return JpaUtil.getEmf().createEntityManager()
                              .createNamedQuery("Journey.findJourneysByYear", Journey.class)
                              .setParameter("user", user)
                              .setParameter("date",date)
                              .getResultList();
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
                  return null;
              }



          • Partager sur Facebook
          • Partager sur Twitter

          [JPA/SERVLET/JSP] NamedQuery et date

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown