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

  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 ! :/

  7. #7
    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
    Misère...
    Et en essayant avec Criteria ça marche pas mieux ?

  8. #8
    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
    et bien le problème c'est que ma requête est spécifique oracle, d'où le fait que je passe par un createSQLQuery ... donc malheureusement le criteria ne sera pas ma solution dans ce cas ! :/

  9. #9
    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
    C'est fou comme truc...
    Tes colonnes récupérées doivent nécessairement voir un ":" dans le nom ?

  10. #10
    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
    Salut.

    Et bien en fait je ne récupère pas réellement de colonne, avec xmlelement je construit une structure Xml pour mes données géographiques normées GML. Donc malheureusement oui, j'ai besoin de ces fameux ":" ... :'(

  11. #11
    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
    Bonjour, je n'ai toujours pas trouver de solution à mon problème.

    Pour aider à l'investigation, j'ai fait des recherches et apparemment des soumissions de bugs auraient été fait pour mon problème. Et il aurait été apparemment résolu mais seulement pour les chaînes entre ' ' et non pas entre " ".

    Est-ce que quelqu'un pourrait me confirmer cela ?

    Merci d'avance à tous !

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    question, puisque tu fait directement un requete SQL et non pas un requete Hibernate, pourquoi tu ne bypasse pas hibernate pour attaquer directement le connecteur JDBC? Et pourrais-t-on voir ton code? Parce que, sur tout ce post, je vois pas une seule ligne de code Avoir le contexte d'exécution ne serait pas superflu

  13. #13
    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
    j'ai jamais aimer xml et le temps m'a donné raison (pour de l'exportation ou requête dans des bases) tu ferais mieux de faire des requêtes par critieria et ensuite de les transformé en xml toi même dans un service ... comme ca si dans un proche avenir tu changes de bd tu garderas tes entités et dao hibernate

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