IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Requête criteria (récupérer l'année d'une date) [Criteria]


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Points : 41
    Points
    41
    Par défaut Requête criteria (récupérer l'année d'une date)
    Bonjour,

    Comment récupérer les enregistrements pour une année précise 'critere.getAnnee()'

    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
     
    public List<MyOverview> rechercherPourOverview(MyCriteresBean critere) throws ServiceException {
     
    	Criteria criteria = getSession().createCriteria(MyClasse.class);
     
    	ProjectionList projectionList = Projections.projectionList();
    	projectionList.add(Projections.property("id"), "id");
    	projectionList.add(Projections.property("date"), "date");
     
    	if (!StringUtils.isEmpty(critere.getAnnee())) {
    		// enregistrements de l'année critre.getAnnee(), bien sur YEAR(date) ne fonctionne pas
    		criteria.add(Restrictions.eq("YEAR(date)", critere.getAnnee()));
    	}
     
    	criteria.setProjection(projectionList);
    	criteria.setResultTransformer(Transformers.aliasToBean(MyOverview.class));
    	return criteria.list();
    }
    Merci pour votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Points : 41
    Points
    41
    Par défaut
    J'ai trouvé la solution, j'extrais l'année de la date et je la compare à l'année passée en paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    criteria.add(Restrictions.sqlRestriction("extract(year from date) = " + critere.getAnnee()));
    Et merci

  3. #3
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    À noter que du point de vue performance SQL, si tu veux qu'un index soit utilisé il faut (*) garder l'objet date intact et non passer par des fonctions ; sur des égalités sur extractions (année, année+mois, etc.) ça peut se faire avec un encadrement par deux dates.

    (*) à moins de définir un index de fonction sur la colonne, mais ce n'est pas génial.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    Merci pour ta remarque, que serait la requête avec encadrement par deux dates ? ( entre 01/01/critere.getAnnee() et 31/12/critere.getAnnee())

    Merci

  5. #5
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    En sql ça ressemblerait à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
           date >= TO_DATE('01/01/2011','DD/MM/YYYY')
    AND date < TO_DATE('01/01/2012','DD/MM/YYYY')
    Avec du HQL tu peux passer par des Calendars, créer les dates idoines, et ajouter des Restrictions de comparaison.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer l'année d'une date
    Par clement106 dans le forum Langage
    Réponses: 5
    Dernier message: 26/12/2009, 13h45
  2. récupérer l'année d'une date
    Par besco dans le forum Débuter
    Réponses: 4
    Dernier message: 10/01/2007, 14h18
  3. [Debutant] récupérer l'année d'une date
    Par petitelulu dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 27/10/2004, 16h28
  4. requête sur l'année d'une date
    Par jo77 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/07/2003, 10h28
  5. Récupérer l'année d'une date
    Par delphim dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/01/2003, 17h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo