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 ORACLE en java avec hibernate


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Points : 17
    Points
    17
    Par défaut Requête ORACLE en java avec hibernate
    Bonjour
    Mon besoin est d'exécuter une requête comme suit dans un module IHM java avec hibernate :
    select round((TO_NUMBER(TO_CHAR(MadateEmbauche,'J')) - TO_NUMBER(TO_CHAR(MadateNaissance,'J'))) / 365),
    count(Personne),
    from Matable
    group by round((TO_NUMBER(TO_CHAR(Madate1,'J')) - TO_NUMBER(TO_CHAR(Madate2,'J'))) / 365)
    order by ...............................................................

    En clair , le nombre de personnes par age d'embauche :
    Age Nbre
    20 5
    22 8
    30 12
    etc ...


    Ce genre de requête marche très bien lancée directement d'un client ORACLE

    Mais lorsque je la fais dans un module java avec hibernate , ça ne marche pas , j'ai un message du genre net.sf.hibernate.QueryException: , expected in .......................................

    Et j'ai bien l'impression que c'est le round(idem pour trunc) qui ne passe pas.

    Le pb c'est que je ne sais pas comment faire autrement, et que je dois m'adapter à un module java existant.

    Merci à ceux qui peuvent m'aider

  2. #2
    Membre habitué Avatar de xv-mnt
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 142
    Points : 178
    Points
    178
    Par défaut
    1- Peux-tu envoyer la requete HQL que tu as écrite, avec les classes utilisées ?
    2- Au pire tu peux envoyer directement une requête SQL au travers de l'API Hibernate.
    Tout le monde savait que c'était impossible à faire. Puis un jour quelqu'un est arrivé qui ne le savait pas, et il le fit (Winston Churchill)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    En fait, en décomposant petit à petit ma requête, j'ai trouvé ce que le HQL n'aimait pas : le signe - et le TO_NUMBER.
    J'ai donc changer ma requête en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select trunc(to_char (months_between (Madate1,Madate2))/12),
    count(Personne),
    from Matable
    group by  trunc(to_char (months_between (Madate1,Madate2))/12)
    order by .......
    Et ça fonctionne !
    Effectivement,il y avait la possibilité d'écrire la requête en sql natif

Discussions similaires

  1. Requête SQL de base sous java avec Hibernate
    Par ritchie23 dans le forum JDBC
    Réponses: 0
    Dernier message: 29/10/2008, 09h54
  2. Requête oracle avec condition
    Par helmis dans le forum Débuter
    Réponses: 2
    Dernier message: 29/06/2008, 11h36
  3. gestion des Schema oracle avec hibernate
    Par fbo1276 dans le forum Hibernate
    Réponses: 2
    Dernier message: 19/11/2007, 17h53
  4. Traiter un groupe de requêtes avec Hibernate
    Par barouz dans le forum Hibernate
    Réponses: 1
    Dernier message: 20/04/2007, 16h11
  5. Protocol violation sur Oracle avec hibernate
    Par francois.chapuzot dans le forum Hibernate
    Réponses: 1
    Dernier message: 04/08/2006, 08h33

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