These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 9 posts ] 
Author Message
 Post subject: Partie décimal non persisté.
PostPosted: Wed Apr 26, 2006 6:08 am 
Newbie

Joined: Mon Jan 16, 2006 10:49 am
Posts: 12
Bonjour

J’ai un problème avec la partie décimal des valeurs numériques dans mon appli. En effet depuis certain poste la partie décimale des valeurs numériques disparait lors de la persistance de la donnée.

L’application est construite sur la plate forme suivante
Base de données : Oracle 10g ou IBM DB2
Serveur d’appli : Websphere v6 sur Windows serveur 2003
http serveur : IHS (encore un apache :-)
Bibliothèque : Hibernate 3.1, Axis 1.3, Struts

L’application est actuellement déployée sur un serveur dédié et les utilisateurs y accèdent via IE sous XP, SP2 avec une configuration des paramètres régionaux identique.
Le même scénario sur un poste conduit à l’enregistrement des valeurs numériques correctement, mais sur un autre poste les valeurs numériques n’ont pas de décimale. Deux des postes étant des postes de développement j’ai analysé au débuggeur les valeurs passées étapes par étapes. Elles sont correctes et identique. Je n’analyse aucune différence jusqu’au session.save d’Hibernate. Cependant le résultat est bien différent en bdd.
J’ai contrôlé les paramètres régionaux des postes, contrôlé le typage des DTO et des fichiers de mapping, sans résultat.
Je pose la question sur ce forum car comme expliqué tout est identique jusqu’au plus loin du débuggage c'est-à-dire lors de la sauvegarde par Hibernate.

Quelqu’un a-t-il une idée ?


Top
 Profile  
 
 Post subject:
PostPosted: Wed Apr 26, 2006 8:05 am 
Regular
Regular

Joined: Sat May 15, 2004 4:27 am
Posts: 79
Lorsque tu fait un insert à la main dans cette même base, est-ce que la partie
décimale est bien présente ? Comment as-tu déclaré le champs dans ta base

NUMBER(n, x) ????

ps : si cette réponse est utilie merci de me donner un crédit


Top
 Profile  
 
 Post subject:
PostPosted: Wed Apr 26, 2006 8:26 am 
Newbie

Joined: Mon Jan 16, 2006 10:49 am
Posts: 12
Jj'ai fait plusieurs tentative, une fois avec le type FLOAT et une fois avec un type NUMBER(20,5) en BDD Oracle. A chaque fois j'ai typé le champ et le sql-type dans le ficheir de mapping. Le résultat est le même.

J'ai tenté un insert à la main dans la base sur le poste qui pose probleme et là la valeur est bien insérée.

J'ai aussi tenté de modifier la valeur transmise dans le DTO avant le session.save par le debugger pour m'assurer d'un eventuel probleme de format numéric en remplaçant 12.69 par 12,69 mais ce n'est pas possible. Donc le format est bien reconnu et est le bon

Enfin j'ai tenté de modifier le DecimalFormat dans la jvm avant le session.save mais aussi avant la récupération de la valeur saisie. Toujours pareil cela ne change rien.

là j'ai plus d'idée.


Top
 Profile  
 
 Post subject:
PostPosted: Fri Apr 28, 2006 6:33 am 
Newbie

Joined: Mon Jan 16, 2006 10:49 am
Posts: 12
finalement j'ai trouvé une solution : je force la police de caractère utilisé en UTF-8 au niveau du serveur d'application.
Pour info dans Websphere c'est -Dclient.encoding.override=UTF-8


Top
 Profile  
 
 Post subject:
PostPosted: Thu May 04, 2006 1:14 pm 
Newbie

Joined: Mon Mar 06, 2006 12:57 pm
Posts: 3
Bonsoir,
j'ai exactement le meme problème, et je m'arrache les cheveux.
je ne vois pas le lien entre ton problème et la réponse apportée
merci de m'éclairer


Top
 Profile  
 
 Post subject:
PostPosted: Thu May 04, 2006 3:02 pm 
Newbie

Joined: Mon Jan 16, 2006 10:49 am
Posts: 12
Bonsoir

Je ne sais pas exactement pourquoi cela résout le problème mais j'en conclu qu'en forçant la table de caractères au niveau du serveur d'application, je m'assure que les paramètres régionaux ou tout autre config client n'interfère pas avec les données. Une fois que la donnée a été lue elle est obligatoirement dans le format de la table. C'est comme ça que je comprends la solution mais franchement cela me laisse dubitatif. Cela ne semble pas normal du tout.


Top
 Profile  
 
 Post subject:
PostPosted: Wed May 17, 2006 5:03 pm 
Proxool Developer
Proxool Developer

Joined: Tue Aug 26, 2003 10:42 am
Posts: 373
Location: Belgium
Ce probleme n'a rien a voir avec Hibernate.

Si je comprends bien, les donnees proviennent d'un encodage d'un formulaire web renvoye via un http post a ton application. Dans ce cas, l'encodage des informations depends tres probablement de la locale de ton client (si pas forcee dans ta session http). La conversion string->numeric echoue donc dans certains cas (decimale avec un point ou une virgule).
Pour en etre sur, je te conseille d'inspecter l'objet que tu persistes apres traitement de ta requete http. Il y a de forte chance que deja a ce moment ta valeur numerique ne corresponds plus a ce que tu attends...

Dans tous les cas, Hibernate ne fait que persister ce que tu lui donnes...


Top
 Profile  
 
 Post subject:
PostPosted: Thu May 18, 2006 3:02 pm 
Newbie

Joined: Mon Jan 16, 2006 10:49 am
Posts: 12
Bonsoir

J'ai vérifier les parametres au débugger d'un bout à l'autre de la chaine comme je l'ai écrit précédement et je garantie que le format est correcte. J'ai même tenté de modifier les valeurs au débugger avant la persistance pour être certain. En outre la locale est forcée. Il y a bel et bien un probleme, mais en aucun cas je n'incrimine Hibernate directement et d'ailleurs la solution que j'ai trouvé ce trouve dans la configuration du serveur j2ee. Mais quoi qu'il en soit, une même appli acceder par 2 postes differents ne donne pas le même résultat alors que les configurations sont STRICTEMENT idenitque. Au débugger les valeurs sont correctes dans les deux cas. C'est etrange.


Top
 Profile  
 
 Post subject:
PostPosted: Thu May 18, 2006 3:50 pm 
Proxool Developer
Proxool Developer

Joined: Tue Aug 26, 2003 10:42 am
Posts: 373
Location: Belgium
Histoire d'eclaircir la chose, pourrais-tu communiquer le code Java de l'entite persistee ainsi que l'HBM (le mapping) correspondant ?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 9 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.