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 :

Comparaison d'objets de type Double


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Femme Profil pro
    Analyste-developpeur java
    Inscrit en
    Mai 2010
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste-developpeur java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2010
    Messages : 135
    Points : 76
    Points
    76
    Par défaut Comparaison d'objets de type Double
    Bonjour!

    L'application sur laquelle je travaille utilise Hibernate et les EJB3. Ma question est la suivante:
    Il y a un champs en BDD mappé en objet Double par Hibernate.
    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
        @Column(name = "SIT_LONGITUDE_N", unique = false, nullable = true, insertable = true, updatable = true, precision = 9, scale = 6)
        public Double getLongitude() {
            return this.longitude;
        }
     
        public void setLongitude(Double longitude) {
            this.longitude = longitude;
        }
     
        @Column(name = "SIT_LATITUDE_N", unique = false, nullable = true, insertable = true, updatable = true, precision = 9, scale = 6)
        public Double getLatitude() {
            return this.latitude;
        }
     
        public void setLatitude(Double latitude) {
            this.latitude = latitude;
        }
    Dans un test que j'effectue dans un objet Facade, je compare la valeur entrée par l'utilisateur (mise dans un double) avec la valeur récupérée en BDD (requête Hibernate).

    Extrait du code de la requête pour ce champ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where site.latitude like :latitude and site.longitude like :longitude
    latitude et longitude sont des attributs de type Double, d'un objet Critère passé à la requête, qui contient les champs entrés par l'utilisateur.

    Mon problème est le suivant: le champ en BDD contient 6 chiffres après la virgule.
    Si l'utilisateur entre une latitude qui une fois convertie en double et arrondie contient un ou plusieurs 0 en dernière position (par exemple 1.233400 ou 1.234560) le double qui sera comparé au champ en BDD supprimera les 0 inutiles (1.2334(objet critère) sera comparée à 1.233400(en BDD) et 1.23456(objet critère) à 1.234560(en BDD)).
    La recherche ne retournera rien. Bien sur, ce problème ne se pose qu'en cas de 0 finaux.
    J'ai essayé de convertir ce double en String en lui appliquant un masque afin qu'il ait exactement la bonne forme, cependant je ne parviens pas à comparer cette nouvelle variable de type String à l'objet en BDD (cette comparaison ne peut pas se faire).
    Et lorsque je reconvertis le nouvel objet String en Double, le problème de 0 persiste.

    Je ne sais pas comment procéder à présent...
    J'ai eu l'idée de doublement mapper (hibernate) ces deux champs en BDD à une autre variable de type String pour chacun (en conservant les mappage vers les doubles). Qu'en pensez vous? Est il permis de procéder de cette façon?

    Auriez vous s'il vous plait une idée de solution à mon problème? Dans le code de la requête ou toute autre suggestion?

    Merci d'avance!

  2. #2
    Membre régulier
    Femme Profil pro
    Analyste-developpeur java
    Inscrit en
    Mai 2010
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste-developpeur java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2010
    Messages : 135
    Points : 76
    Points
    76
    Par défaut
    J'ai trouvé la solution!

    Au lieu de faire la recherche avec un like je l'ai faite sur un intervalle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    where site.latitude < :latitude +0.000001
    and  site.latitude > :latitude -0.000001
    and site.longitude < :longitude  +0.000001
    and site.longitude > :longitude  -0.000001
    Le problème des 0 est résolu!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/09/2014, 22h12
  2. Réponses: 13
    Dernier message: 16/03/2008, 13h35
  3. [ArrayList]transformer l'objet récupéré en double...
    Par snoop dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 16/07/2004, 16h16
  4. DB objet sous types heritage
    Par smex dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 15/06/2004, 21h58
  5. [LG]Convertir le type double en string
    Par @tom@ dans le forum Langage
    Réponses: 8
    Dernier message: 18/01/2004, 19h20

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