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 :

Criteria- opérations ensemblistes


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Par défaut Criteria- opérations ensemblistes
    Bonjour à tous,

    Je passe actuellement des requêtes SQL en criteria. Le soucis est que ma requête contient un UNION, or je ne sais pas comment mettre ceci en place avec criteria.

    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT icentre, idep FROM r_centre_de_formation
    WHERE ietat=1 AND months_between(sysdate, date_cf) > 6
    AND icentre NOT IN ((SELECT id_enreg FROM r_alerte WHERE id_fichier='3')
    		    UNION
                   (SELECT id_enreglog FROM r_alerte_log WHERE id_fichierlog='3'));
    Et ce que j'ai deja pu faire de dessus :

    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
     
    Criteria crit = getSession().createCriteria(Fichier.class);
    DetachedCriteria dcrit_alerte = DetachedCriteria.forClass(Alerte.class);
    dcrit_alerte.add(Restrictions.eq("id_fichier", 3));
    DetachedCriteria dcrit_alertelog = DetachedCriteria.forClass(AlerteLog.class);
    dcrit_alerte.add(Restrictions.eq("id_fichierlog", 3));		
     
     
    Calendar cal = new GregorianCalendar();
    cal.add(Calendar.MONTH, -6);
     
    crit.add(Restrictions.eq("etatFichier", 1));
    crit.add(Restrictions.lt("dateDelivre", cal.getTime() ));
     
    crit.setProjection( Projections.property("icentre") );
     
    crit.add(Property.forName("icentre").notIn(dcrit_alerte));
    crit.add(Property.forName("icentre").notIn(dcrit_alertelog));		
     
    return (List<Fichier>) getHibernateTemplate().findByCriteria((DetachedCriteria) crit);
    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Une UNION est similaire à un OR (ou NOT AND dans ton cas), un équivalent de ta requête est donc :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT icentre, idep FROM r_centre_de_formation
    WHERE ietat=1 AND months_between(sysdate, date_cf) > 6
    AND icentre NOT IN (SELECT id_enreg FROM r_alerte WHERE id_fichier='3')
    AND icentre NOT IN (SELECT id_enreglog FROM r_alerte_log WHERE id_fichierlog='3');
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Membre à l'essai
    Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Par défaut
    ok merci bcp vu comme ca c'est tout de suite bcp plus simple. Merci pour le coup de main

  4. #4
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Si la solution te convient, n'oublies pas de cliquer sur
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  5. #5
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Je n'ai rien à ajouter sur la demande initiale, Nemek a fort bien répondu, cependant juste d'un point de vue SQL, quand tu fais du NOT IN, autant mettre du UNION ALL à l'intérieur, ça permet d'éviter de la consommation de ressource totalement inutile.

  6. #6
    Membre à l'essai
    Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Par défaut
    Merci pour l'info toujours bon a prendre =)

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

Discussions similaires

  1. [jsp]Date et opérations
    Par o151181 dans le forum Servlets/JSP
    Réponses: 17
    Dernier message: 09/04/2004, 16h41
  2. [Builder] Effectuer une opération quand une resource a changé
    Par Satch dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 08/04/2004, 13h22
  3. opérations sur les bits d'un byte
    Par petitours dans le forum C++Builder
    Réponses: 4
    Dernier message: 10/02/2004, 20h42
  4. opérations sur les dates
    Par coucoucmoi dans le forum Débuter
    Réponses: 2
    Dernier message: 12/08/2003, 11h45
  5. opération en XSL
    Par rastapopulos dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 12/03/2003, 22h39

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