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 et vérification de nature d'une chaîne de caractères


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 90
    Points : 66
    Points
    66
    Par défaut Criteria et vérification de nature d'une chaîne de caractères
    Bonjour à tous,

    C'est la première fois que je suis confronté à ce problème.
    En java, avec Hibernate et surtout avec les DetachedCriteria, je cherche à tester 2 choses :
    - que l'attribut de la classe est non nul
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     criteria.add(Restrictions.isNotNull("benef.idfonctionnel"));
    - mais aussi que s'il est non nul, il ne comporte que des chiffres. Et ça, je ne sais pas comment l'écrire. Est-ce seulement possible simplement?

    Merci pour vos lumières....

    Bonne journée à tous.
    Cordialement,
    Thomas

  2. #2
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Ton champ Id doit être numérique ou null en base? Il est de quel type physiquement dans ta base de données? Et dans ton Objet que tu as mappé?

    Parce que si tu as un champ en base de type NUMERIC qui est mappé sur un Number dans ton objet, normalement, tu n'as rien à tester.

    Si ton champ ID est de type CHAR(X) et peut contenir autre chose que des valeurs numériques, tu auras forcement un autre problème. Mais est-ce bien logique d'avoir un champ en base contenant des genres différents et de vouloir faire une requête sur un de ces genres?

    Plusieurs possibilités :
    - Ajouter une colonne qui permet de déterminer le type de données (genre si ton identifiant est numérique ou alphanumérique)
    - Faire en sorte que ta colonne ID ne soit que Numérique
    - Utiliser un Criteria SQL (avec une base oracle ça donne un truc du genre : )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Restrictions.sqlRestriction("trim(translate(<nom technique colonne idfonctionnel>, "0123456789", "          ") is null")
    Je ne suis pas mort, j'ai du travail !

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 90
    Points : 66
    Points
    66
    Par défaut
    Bonjour eulbobo,

    mon champ est bien alpha (varchar en base et string dans le bean). C'est un id fonctionnel, pas l'id hibernate.
    En théorie, il contient du numérique, mais ça, je ne peux pas en être certain.
    Je travaille avec Postgresql (désolé, j'avais oublié de le préciser).

    Ta réponse avec le sqlRestriction me paraît très intéressante, mais...je ne la comprends pas .
    Que fait-elle exactement?

  4. #4
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    translate est une fonction Oracle bien sympa qui permet de faire du remplacement de pleins de caractères en une seule fois

    Je détaille :
    - translate(<nom technique colonne idfonctionnel>, "0123456789", " ")
    C'est la fonction qui permet de dire :
    Remplace le 0 par "espace"
    Remplace le 1 par "espace"
    Remplace le 2 par "espace"
    ...
    (pour ça qu'il y a autant d'espaces que de chiffres testés)

    - trim(xxx)
    Supprimer les espaces en trop

    Si on est sur un champ entièrement numérique, trim(remplacer numérique par espace), ça fait null

    Du coup, si ce n'est pas null, ce n'est pas numérique !


    Tu vas être content, la fonction est la même avec postgres !


    Sinon, j'ai tendance à me poser des questions sur la cohérence d'un modèle quand on attend un champ numérique et qu'on a en base un champ de type CHAR...
    Je ne suis pas mort, j'ai du travail !

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 90
    Points : 66
    Points
    66
    Par défaut
    Ok....je vois mieux ce que cela fait
    Merci....

    Je pense résoudre le pb en ajoutant une colonne décrite en numérique....ce sera plus simple.

    En tout cas merci pour ces réponses!

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Vérifier nature d'une chaîne de caractères
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/02/2008, 17h56
  3. [Debutant(e)] Analyse d'une chaîne de caractères
    Par maire106 dans le forum Langage
    Réponses: 6
    Dernier message: 22/03/2004, 15h04
  4. Inverser une chaîne de caractères
    Par DBBB dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/03/2003, 11h09
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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