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 :

Comment échapper le caractère : avec hibernate ?


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 44
    Par défaut Comment échapper le caractère : avec hibernate ?
    Bonjour,

    tout d'abord je tiens à m'excuser d'avance si je ne poste pas dans le bon forum, j'ai bien mis 10min à savoir où j'allais poster ! Merci de me prévenir si je me suis tromper.

    Alors mon problème concerne une fonction spécifique oracle qu'est xmlelement. Mais je pense que le problème vient concrètement d'hibernate.
    Voici mon SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT xmlelement("ouvrage", xmlattributes(
      'http://www.opengis.net/gml' as "xmlns:gml"),
      xmlforest(xmltype(sdo_util.to_gmlgeometry(geometry)) as "gml:geometryProperty"))
      AS theXMLElements FROM ouvrage WHERE id_ouvrage = 'toto';
    Alors comme vous pouvez le voir j'utilise des fonctions géométriques, mais ce n'est pas cela qui me pose problème.

    Si j'exécute cette requête directement sous SQL Plus, elle fonctionne sans soucis.

    Si je l'exécute avec Hibernate j'obtiens l'erreur suivante :

    org.hibernate.QueryException: Not all named parameters have been set: [gml", geometryProperty"] [...]
    En fait dans le chaînes mises en gras dans le premier extrait, vous pouvez constater qu'il y a des ":" qui sépare mes mots. Et apparemment hibernate n'aime pas cela ! En effet quand je les enlève, ma requête avec hibernate fonctionne sans soucis. Cependant j'ai besoin des mes ":" ! Je suis donc dans l'impasse !

    Est-ce que cette exception est normal ? Y a t'il un quelconque caractère d'échappement qui pourrait m'aider que je ne connais pas ?

    Merci beaucoup d'avance pour votre aide !

    Cordialement,
    ReiVon.


    EDIT : Bon, en fait le ":" est utilisé pour les paramètres nommés. Mais comment "escape" ce symbole svp ? Je n'ai trouvé aucun moyen pour le moment ...

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    tu la fais comment ta query en hql ? si tu veux vraiment que le charactère " apparaisse dans ta requête il te faut d abord la mettre "\""

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 44
    Par défaut
    euh, oui j'ai mis tous les échappements qu'il fallait pour les double quote. Le problème est le caractère ":".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQLQuery cr = sessionFactory.getCurrentSession().createSQLQuery("" +
                "SELECT xmlelement(\"ouvrage\", xmlattributes(" + 
                "'http://www.opengis.net/gml' as \"xmlns:gml\")," +
                "xmlforest(xmltype(sdo_util.to_gmlgeometry(geometry)) as \"gml:geometryProperty\"))" +
                "AS theXMLElements FROM ouvrage WHERE iou_code_ouvrage = 'toto'");

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 44
    Par défaut
    Re-Bonjour.

    Personne ne connaît la réponse à cette question ?

    Je n'ai trouvé aucun moyen pour le moment d'échapper ce caractère. Ça me paraît aberrant tout de même, je ne dois pas être le premier à tomber dans un tel problème, et pourtant je ne trouves aucunes réponses à travers le net ?

  5. #5
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    souvent on double le caractère, t'as essayé "::" ? "\\:" ça marche pas ?

    au pire tu peux mettre tes Strings avec des ":" à part et les passer en paramètre de la requête hibernate

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 44
    Par défaut
    Oui, j'aurais dû le préciser, mais j'avais testé et cela ne marche pas.

    Et même la solution du "j'en fais un paramètre" ne fonctionne pas. Quand je fais cela, il me dit qu'il manque un identifieur ! Cette technique fonctionne pour tout ce qui est paramètre, mais pour tout ce qui est dans mon cas, les chaînes délimités obligatoirement par des " ne fonctionnent pas ! :/

Discussions similaires

  1. Débutant : comment échapper les caractères venant d'une base de donnée ?
    Par powerwave dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 24/11/2014, 16h57
  2. Comment le type enum avec Hibernate
    Par 0coco0 dans le forum Langage
    Réponses: 1
    Dernier message: 27/08/2008, 13h54
  3. Comment forcer la sauvegarde avec Hibernate?
    Par yli_ren dans le forum Hibernate
    Réponses: 2
    Dernier message: 07/05/2008, 14h00
  4. [Unit Testing] Comment s'y prendre avec Hibernate ?
    Par Wookai dans le forum Hibernate
    Réponses: 2
    Dernier message: 21/06/2007, 11h10
  5. Réponses: 2
    Dernier message: 06/11/2005, 11h11

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