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.
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).
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; }
Extrait du code de la requête pour ce champ
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 where site.latitude like :latitude and site.longitude like :longitude
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!
Partager