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 MySQL avec Hibernate


Sujet :

Hibernate Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 41
    Par défaut Requête MySQL avec Hibernate
    Bonjour,

    J'ai cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select * from voiture left outer join reservation on(voiture.id=reservation.voiture) 
    where voiture.id not in(select voiture.id from voiture, reservation 
    where voiture.id = reservation.voiture and 
    (dateDeb between '2015-05-03' and '2015-05-04' 
    or dateRet between '2015-05-03' and '2015-05-04'))
    qui fonctionne très bien lorsque je la tape dans mysql

    Je l'ai transposé pour l'utiliser avec hibernate et là erreur.

    Class data
    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
    public class VoitureData {
     
        public static List<Voiture> rechercheVoitureDisponible (String dateDeb,String dateRet)throws Exception{
     
            Transaction trans;
            Voiture voiture=null;
            List<Voiture> lVoitures;
            Session sess;
     
     
            sess = HibernateUtil.getSessionFactory().openSession();
            trans = sess.beginTransaction();
            String requete= "from voiture left outer join reservation on(voiture.id=reservation.voiture) "
            +"where voiture.id not in( "
                    +"from voiture, reservation "
                    +"where voiture.id = reservation.voiture "
                    +"and (dateDeb between '"+dateDeb+"' and '"+dateRet+"' "
            +"or dateRet between '"+dateDeb+"' and '"+dateRet+"'))" ;
     
            lVoitures=  sess.createQuery(requete).list();
            System.out.println(lVoitures.size());
            trans.commit();
     
            return lVoitures;
    et j'obtiens cette erreur :

    unexpected token: on near line 1, column 42 [from voiture left outer join reservation on(voiture.id=reservation.voiture) where voiture.id not in( from voiture, reservation where voiture.id = reservation.voiture and (dateDeb between '2015-05-03' and '2015-05-04' or dateRet between '2015-05-03' and '2015-05-04'))

    Erreur à la colonne 42 qui correspond au "on", les join ne sont pas possible avec hibernate?

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Par défaut
    Tu peux, mais là, tu as écrit ta requête en SQL, il faut la transformer en requête objet.
    Ce qui donnerait quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from voiture v left outer join v.reservation ....
    Pour peu que ton objet voiture possède un attribut reservation.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 41
    Par défaut
    C'est l'inverse, c'est reservation qui contient un objet voiture. J'avais un prob dans le mapping que j'ai réglé, mais mtn je ne reçois rien de ma requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     String requete= "from Reservation r right outer join r.voiture ";
            +"where r.voiture.id not in( "
                    +"from voiture, Reservation "
                    +"where voiture.id = Reservation.voiture "
                    +"and (Reservation.dateDeb between '"+dateDeb+"' and '"+dateRet+"' "
            +"or Reservation.dateRet between '"+dateDeb+"' and '"+dateRet+"'))" ;
    Le problème c'est que là je reçois des Reservation et plus des voitures :/

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select v from Reservation r right outer join r.voiture v

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 41
    Par défaut
    Merci beaucoup, je n'avais pas pensé au select v comme ça

    Voici donc ma requête entière si ça peut aider plus tard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String requete= "select v from Reservation r right outer join r.voiture v "
                    +"where v.voiture_id not in("
                    +"select vo.voiture_id from Reservation re join re.voiture vo "
                            +"where re.dateDeb between '"+dateDeb+"' and ' "+dateRet+"' "
                            +"or re.dateRet between '"+dateDeb+"' and ' "+dateRet+"')";

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Bonjour,
    Peut on voir le code des entités Voiture et Reservation ?

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

Discussions similaires

  1. [MySQL] Requête Mysql avec une division
    Par Equinoxe5 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/01/2008, 15h00
  2. [MySQL] requêtes mysql avec php
    Par youness78 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/07/2007, 16h37
  3. [MySQL] requête mysql avec condition à élaborer à partir d'un tableau
    Par taffMan dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 13/06/2007, 09h18
  4. Problème de requête MYSQL avec plusieurs limit
    Par Super_baloo8 dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/05/2007, 18h35
  5. Réponses: 2
    Dernier message: 29/01/2007, 15h13

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